From 4e823d358ddc4d8a45b0b01123d75e7a6b260782 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:33:17 -0500 Subject: [PATCH 01/12] Move the probe scenarios into the library's tests as data Each scenario now lists its SDL files and resolvers and configures the rest of the builder, so a test can read its schema and swap its resolvers. The probe compiles the same directory. The type-extensions scenario repeated a field, a member, a value and a directive in its extensions, which 15.0.0 rejects, so it dropped them and its feature page says what 15.0.0 does. --- .claude/skills/verify-tools/SKILL.md | 22 +++++++----- .../features/context-and-environment.md | 2 +- .../features/directives-and-relay.md | 4 +-- .../skills/verify-tools/features/proxies.md | 2 +- .../verify-tools/features/schema-building.md | 2 +- .../verify-tools/features/type-extensions.md | 34 +++++++------------ .claude/skills/verify-tools/probe.sh | 5 +-- .claude/skills/verify-tools/probe/pom.xml | 16 +++++++++ .../probe/src/main/kotlin/probe/Main.kt | 5 +-- .../tools/compat}/scenarios/Async.kt | 8 ++--- .../tools/compat}/scenarios/Bookstore.kt | 18 +++++----- .../scenarios/ContextAndEnvironment.kt | 18 +++++----- .../compat}/scenarios/ContextMisbound.kt | 11 +++--- .../tools/compat}/scenarios/DirectiveDrift.kt | 17 +++++----- .../tools/compat/scenarios}/DirectiveDump.kt | 4 +-- .../tools/compat}/scenarios/Directives.kt | 11 +++--- .../compat}/scenarios/DirectivesInvalid.kt | 11 +++--- .../compat}/scenarios/GenericInputResolver.kt | 8 ++--- .../tools/compat}/scenarios/Inputs.kt | 11 +++--- .../tools/compat}/scenarios/JdkProxy.kt | 16 ++++----- .../tools/compat}/scenarios/NestedUnions.kt | 11 +++--- .../tools/compat}/scenarios/NestedWrappers.kt | 16 ++++----- .../compat}/scenarios/NestedWrappersExact.kt | 11 +++--- .../compat}/scenarios/OptionalResults.kt | 23 +++++-------- .../tools/compat}/scenarios/Options.kt | 11 +++--- .../tools/compat}/scenarios/Polymorphism.kt | 11 +++--- .../tools/compat}/scenarios/ReadOnlySchema.kt | 10 +++--- .../compat}/scenarios/RecursiveInputs.kt | 11 +++--- .../tools/compat}/scenarios/ScalarArgs.kt | 11 +++--- .../compat}/scenarios/ScalarDirectives.kt | 11 +++--- .../tools/compat}/scenarios/Scenario.kt | 12 +++++-- .../tools/compat}/scenarios/Sourceless.kt | 28 +++++++-------- .../tools/compat}/scenarios/TypeExtensions.kt | 11 +++--- .../scenarios/TypeExtensionsInputOrder.kt | 8 ++--- .../scenarios/TypeExtensionsRepeatedFields.kt | 8 ++--- .../compat}/scenarios/TypeExtensionsSealed.kt | 8 ++--- .../tools/compat}/scenarios/UnmappedInputs.kt | 8 ++--- .../tools/compat}/scenarios/WiringShapes.kt | 11 +++--- .../compat}/scenarios/async/01-query.graphql | 0 .../scenarios/async/02-subscription.graphql | 0 .../compat}/scenarios/async/schema.graphqls | 0 .../extension.graphqls | 0 .../scenarios/bookstore/01-books.graphql | 0 .../scenarios/bookstore/02-book-by-id.graphql | 0 .../bookstore/02-book-by-id.variables.json | 0 .../scenarios/bookstore/schema.graphqls | 0 .../schema.graphqls | 3 ++ .../context-and-environment/01-query.graphql | 0 .../context-and-environment/schema.graphqls | 0 .../01-without-argument.graphql | 0 .../context-misbound/02-with-argument.graphql | 0 .../03-context-and-correct.graphql | 0 .../context-misbound/04-type-resolver.graphql | 0 .../context-misbound/schema.graphqls | 0 .../schema.graphqls | 0 .../scenarios/directive-drift/schema.graphqls | 0 .../directives-invalid/01-query.graphql | 0 .../directives-invalid/schema.graphqls | 0 .../scenarios/directives/01-uppercase.graphql | 0 .../directives/02-deprecated.graphql | 0 .../directives/03-connection.graphql | 0 .../scenarios/directives/schema.graphqls | 0 .../generic-input-resolver/01-plain.graphql | 0 .../generic-input-resolver/02-generic.graphql | 0 .../generic-input-resolver/schema.graphqls | 0 .../scenarios/inputs/01-search.graphql | 0 .../scenarios/inputs/02-nickname.graphql | 0 .../scenarios/inputs/03-add-book.graphql | 0 .../inputs/03-add-book.variables.json | 0 .../scenarios/inputs/04-invalid-enum.graphql | 0 .../compat}/scenarios/inputs/schema.graphqls | 0 .../scenarios/jdk-proxy/01-query.graphql | 0 .../scenarios/jdk-proxy/schema.graphqls | 0 .../nested-unions/01-results.graphql | 0 .../scenarios/nested-unions/schema.graphqls | 0 .../nested-wrappers-exact/01-dates.graphql | 0 .../02-tried-dates.graphql | 0 .../03-plain-future-items.graphql | 0 .../04-batched-items.graphql | 0 .../05-boxed-items.graphql | 0 .../06-later-items.graphql | 0 .../07-suspend-plain-future-items.graphql | 0 .../nested-wrappers-exact/schema.graphqls | 0 .../01-nullable-items.graphql | 0 .../02-non-null-items.graphql | 0 .../03-type-variable-strings.graphql | 0 .../nested-wrappers-suspend/schema.graphqls | 0 .../nested-wrappers/01-payload.graphql | 0 .../nested-wrappers/02-payloads.graphql | 0 .../03-payload-strings.graphql | 0 .../nested-wrappers/04-items.graphql | 0 .../nested-wrappers/05-item-names.graphql | 0 .../06-future-of-future.graphql | 0 .../07-future-of-tries.graphql | 0 .../08-tries-of-futures.graphql | 0 .../nested-wrappers/09-loaded-items.graphql | 0 .../10-failed-try-in-list.graphql | 0 .../11-failed-future-in-list.graphql | 0 .../nested-wrappers/12-controls.graphql | 0 .../scenarios/nested-wrappers/schema.graphqls | 0 .../01-optional-result-list.graphql | 0 .../optional-results-list/schema.graphqls | 0 .../01-optional-result.graphql | 0 .../02-result-of-optional.graphql | 0 .../optional-results-mixed/schema.graphqls | 0 .../01-optional-result-of-result.graphql | 0 .../optional-results-nested/schema.graphqls | 0 .../01-optional-result.graphql | 0 .../02-optional-result-name.graphql | 0 .../03-empty-optional-result.graphql | 0 .../optional-results/schema.graphqls | 0 .../scenarios/options/01-fields.graphql | 0 .../options/02-schema-introspection.graphql | 0 .../options/03-type-introspection.graphql | 0 .../compat}/scenarios/options/schema.graphqls | 0 .../scenarios/polymorphism/01-node.graphql | 0 .../scenarios/polymorphism/02-union.graphql | 0 .../scenarios/polymorphism/schema.graphqls | 0 .../read-only-schema/01-interface.graphql | 0 .../read-only-schema/02-union.graphql | 0 .../read-only-schema/03-no-mutation.graphql | 0 .../read-only-schema/schema.graphqls | 0 .../recursive-inputs/01-describe.graphql | 0 .../01-describe.variables.json | 0 .../recursive-inputs/02-introspect.graphql | 0 .../recursive-inputs/schema.graphqls | 0 .../scalar-args/01-custom-scalar.graphql | 0 .../scenarios/scalar-args/02-id.graphql | 0 .../scalar-args/03-nested-sets.graphql | 0 .../scalar-args/04-nested-lists.graphql | 0 .../05-empty-kotlin-scalar.graphql | 0 .../06-marked-empty-kotlin-scalars.graphql | 0 ...tional-marked-empty-kotlin-scalars.graphql | 0 .../scenarios/scalar-args/schema.graphqls | 0 .../01-introspect-scalars.graphql | 0 .../scalar-directives/02-use-scalars.graphql | 0 .../scalar-directives/schema.graphqls | 0 .../sourceless-misbound/01-thumbnail.graphql | 0 .../sourceless-misbound/schema.graphqls | 0 .../sourceless-shadowed/01-shadowed.graphql | 0 .../sourceless-shadowed/schema.graphqls | 0 .../01-helper.graphql | 0 .../sourceless-unimplemented/schema.graphqls | 0 .../sourceless/01-local-context.graphql | 0 .../scenarios/sourceless/02-contexts.graphql | 0 .../scenarios/sourceless/schema.graphqls | 0 .../01-count.graphql | 0 .../schema.graphqls | 0 .../01-kept-declarations.graphql | 0 .../02-introspection.graphql | 0 .../schema.graphqls | 0 .../01-pets-and-animals.graphql | 0 .../type-extensions-sealed/schema.graphqls | 0 .../scenarios/type-extensions/01-node.graphql | 0 .../02-search-and-enums.graphql | 0 .../type-extensions/03-introspection.graphql | 0 .../scenarios/type-extensions/schema.graphqls | 7 ++-- .../unmapped-inputs/01-ignored.graphql | 0 .../scenarios/unmapped-inputs/02-typo.graphql | 0 .../scenarios/unmapped-inputs/schema.graphqls | 0 .../scenarios/wiring-shapes/01-trees.graphql | 0 .../scenarios/wiring-shapes/02-person.graphql | 0 .../scenarios/wiring-shapes/schema.graphqls | 0 163 files changed, 237 insertions(+), 218 deletions(-) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Async.kt (82%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Bookstore.kt (77%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/ContextAndEnvironment.kt (76%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/ContextMisbound.kt (75%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/DirectiveDrift.kt (76%) rename {.claude/skills/verify-tools/probe/src/main/kotlin/probe => src/test/kotlin/graphql/kickstart/tools/compat/scenarios}/DirectiveDump.kt (95%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Directives.kt (81%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/DirectivesInvalid.kt (53%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/GenericInputResolver.kt (66%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Inputs.kt (81%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/JdkProxy.kt (59%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/NestedUnions.kt (58%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/NestedWrappers.kt (89%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/NestedWrappersExact.kt (91%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/OptionalResults.kt (74%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Options.kt (68%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Polymorphism.kt (73%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/ReadOnlySchema.kt (76%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/RecursiveInputs.kt (69%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/ScalarArgs.kt (92%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/ScalarDirectives.kt (82%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Scenario.kt (61%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/Sourceless.kt (74%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/TypeExtensions.kt (78%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/TypeExtensionsInputOrder.kt (74%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/TypeExtensionsRepeatedFields.kt (88%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/TypeExtensionsSealed.kt (72%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/UnmappedInputs.kt (76%) rename {.claude/skills/verify-tools/probe/src/main/kotlin => src/test/kotlin/graphql/kickstart/tools/compat}/scenarios/WiringShapes.kt (89%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/async/01-query.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/async/02-subscription.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/async/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/bookstore-missing-resolver/extension.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/bookstore/01-books.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/bookstore/02-book-by-id.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/bookstore/02-book-by-id.variables.json (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/bookstore/schema.graphqls (100%) create mode 100644 src/test/resources/compat/scenarios/context-and-environment-invalid/schema.graphqls rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-and-environment/01-query.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-and-environment/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-misbound/01-without-argument.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-misbound/02-with-argument.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-misbound/03-context-and-correct.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-misbound/04-type-resolver.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/context-misbound/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directive-drift-undeclared/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directive-drift/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives-invalid/01-query.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives-invalid/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives/01-uppercase.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives/02-deprecated.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives/03-connection.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/directives/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/generic-input-resolver/01-plain.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/generic-input-resolver/02-generic.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/generic-input-resolver/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/01-search.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/02-nickname.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/03-add-book.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/03-add-book.variables.json (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/04-invalid-enum.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/inputs/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/jdk-proxy/01-query.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/jdk-proxy/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-unions/01-results.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-unions/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/01-dates.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/02-tried-dates.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/03-plain-future-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/04-batched-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/05-boxed-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/06-later-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/07-suspend-plain-future-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-exact/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-suspend/01-nullable-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-suspend/02-non-null-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-suspend/03-type-variable-strings.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers-suspend/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/01-payload.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/02-payloads.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/03-payload-strings.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/04-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/05-item-names.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/06-future-of-future.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/07-future-of-tries.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/08-tries-of-futures.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/09-loaded-items.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/10-failed-try-in-list.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/11-failed-future-in-list.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/12-controls.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/nested-wrappers/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-list/01-optional-result-list.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-list/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-mixed/01-optional-result.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-mixed/02-result-of-optional.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-mixed/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-nested/01-optional-result-of-result.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results-nested/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results/01-optional-result.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results/02-optional-result-name.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results/03-empty-optional-result.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/optional-results/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/options/01-fields.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/options/02-schema-introspection.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/options/03-type-introspection.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/options/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/polymorphism/01-node.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/polymorphism/02-union.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/polymorphism/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/read-only-schema/01-interface.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/read-only-schema/02-union.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/read-only-schema/03-no-mutation.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/read-only-schema/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/recursive-inputs/01-describe.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/recursive-inputs/01-describe.variables.json (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/recursive-inputs/02-introspect.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/recursive-inputs/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/01-custom-scalar.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/02-id.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/03-nested-sets.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/04-nested-lists.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/05-empty-kotlin-scalar.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/06-marked-empty-kotlin-scalars.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/07-optional-marked-empty-kotlin-scalars.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-args/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-directives/01-introspect-scalars.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-directives/02-use-scalars.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/scalar-directives/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-misbound/01-thumbnail.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-misbound/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-shadowed/01-shadowed.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-shadowed/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-unimplemented/01-helper.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless-unimplemented/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless/01-local-context.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless/02-contexts.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/sourceless/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-input-order/01-count.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-input-order/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-repeated-fields/01-kept-declarations.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-repeated-fields/02-introspection.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-repeated-fields/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-sealed/01-pets-and-animals.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions-sealed/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions/01-node.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions/02-search-and-enums.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions/03-introspection.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/type-extensions/schema.graphqls (86%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/unmapped-inputs/01-ignored.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/unmapped-inputs/02-typo.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/unmapped-inputs/schema.graphqls (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/wiring-shapes/01-trees.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/wiring-shapes/02-person.graphql (100%) rename {.claude/skills/verify-tools/probe/src/main/resources => src/test/resources/compat}/scenarios/wiring-shapes/schema.graphqls (100%) diff --git a/.claude/skills/verify-tools/SKILL.md b/.claude/skills/verify-tools/SKILL.md index 89a3d8e7..45a44bad 100644 --- a/.claude/skills/verify-tools/SKILL.md +++ b/.claude/skills/verify-tools/SKILL.md @@ -28,8 +28,8 @@ and run another checkout's `probe.sh` from inside it. reads `~/.m2` but never writes it. The install runs `mvn clean install`, so it empties the checkout's `target/`. Don't run it while another build uses the same checkout. The work dir is keyed on the checkout's path, so clones and worktrees run in parallel, even when two share a folder name. If `doctor` shows the lock held by a live pid, wait for that run. -- It builds the schema from the scenario's `parser()`, prints it, then executes every `*.graphql` in - `probe/src/main/resources/scenarios//` in name order, with `.variables.json` as variables. It collects +- It builds the schema from the scenario's files, resolvers and `configure`, prints it, then executes every `*.graphql` in + `src/test/resources/compat/scenarios//` in name order, with `.variables.json` as variables. It collects subscription events until the stream completes, for at most 10 seconds. - Exit `0`: the schema built and every operation ran, though operations can still return GraphQL errors. `2`: the build threw. `1`: harness failure (install log or `maven.log`) or a held lock. `64`: bad usage, such as a missing or unknown @@ -65,17 +65,21 @@ Proof standards: ## Adding a scenario -1. Write the SDL as `probe/src/main/resources/scenarios//schema.graphqls` and load it with `.file(...)`, unless the - behavior is about `schemaString`. -2. Add `object : Scenario` with `name` and `parser()` in `probe/src/main/kotlin/scenarios/.kt`. Being an - object in that package registers it. Classes share the package, so prefix resolver and data classes with the scenario. - Use only public API. If the probe needs `internal` or test classes, a user can't reach the behavior either, so report - that. +Scenarios live in the library's tests, so `mvn verify` compiles them and `CompatTest` builds each one, plus invalid +variants of it, against the last release's results. + +1. Write the SDL as `src/test/resources/compat/scenarios//schema.graphqls`. +2. Add `object : Scenario` with `name`, `files` and `resolvers` in + `src/test/kotlin/graphql/kickstart/tools/compat/scenarios/.kt`, and override `configure(builder)` for scalars, + dictionary, directives or options. Being an object in that package registers it. Classes share the package, so prefix + resolver and data classes with the scenario. Use only public API and nothing from other test packages, since the probe + compiles this directory alone. If the probe needs `internal` or test classes, a user can't reach the behavior either, + so report that. 3. Add operations as `NN-.graphql`, plus `NN-.variables.json` when they take variables. graphql-java rejects a second `__type` in one operation and still exits `0`, so read several types through `__schema { types { ... } }`. 4. Override what the scenario needs. `operations` reuses another scenario's operation directory. `schema(parser)` takes another build path such as `toReadOnlySchema()`. `inspect(schema)` returns evidence the printer doesn't show, and - `probe.dumpDirectives(schema)` lists every element's applied and legacy directives. `graphQL(builder)` and + `dumpDirectives(schema)` lists every element's applied and legacy directives. `graphQL(builder)` and `input(builder)` add instrumentation, context or data loaders. 5. A scenario that doesn't compile breaks every checkout's run, so finish it before running. Keep a scenario that proves a lasting feature and add its exact expected results to the matching file in `features/`. Delete a one-off diff --git a/.claude/skills/verify-tools/features/context-and-environment.md b/.claude/skills/verify-tools/features/context-and-environment.md index ef0b1bb2..24d43d6e 100644 --- a/.claude/skills/verify-tools/features/context-and-environment.md +++ b/.claude/skills/verify-tools/features/context-and-environment.md @@ -44,7 +44,7 @@ Any other trailing parameter type fails the build with "No method found". throws, so `01-helper.json` is `{"threw": "java.util.concurrent.CompletionException: kotlin.NotImplementedError: An operation is not implemented: Schema resolver not implemented"}`. - `run sourceless-misbound`: exit `2`. `thumbnail(GraphQLContext, env)` for `thumbnail(size: Int)` still fails the build. - The signatures listed for `scenarios/sourceless-misbound/schema.graphqls:11` end with + The signatures listed for `compat/scenarios/sourceless-misbound/schema.graphqls:11` end with `scenarios.MisboundImageResolver.thumbnail(~size, )` and `scenarios.MisboundImageResolver.getThumbnail(~size, )`. diff --git a/.claude/skills/verify-tools/features/directives-and-relay.md b/.claude/skills/verify-tools/features/directives-and-relay.md index 5a30a8a8..f7a92751 100644 --- a/.claude/skills/verify-tools/features/directives-and-relay.md +++ b/.claude/skills/verify-tools/features/directives-and-relay.md @@ -67,7 +67,7 @@ application, and fails for a directive with no definition unless `allowUndeclare - **Drift warnings.** `probe.log` of `directive-drift` has 12 `SchemaParser` WARNs. Six are `isn't repeatable but is applied more than once`, two are an extension of `Date` or `Query` applying `@once` again, two are `is missing its required argument` (`@tag` and `@needs`), one is `Directive @fieldOnly at line 38, column 28 in - scenarios/directive-drift/schema.graphqls is applied to ARGUMENT_DEFINITION, but it's declared on FIELD_DEFINITION.`, and + compat/scenarios/directive-drift/schema.graphqls is applied to ARGUMENT_DEFINITION, but it's declared on FIELD_DEFINITION.`, and one is `Scalar 'Money' is built without its directives from the schema: Found an unexpected directive argument tag#nam .` None names `@undeclared`, because `directive-drift` sets `allowUndeclaredDirectives(true)`. - **Undeclared.** `run directive-drift-undeclared`. Exit `2`. `summary.txt` has `schema build: FAILED @@ -75,7 +75,7 @@ application, and fails for a directive with no definition unless `allowUndeclare and `build-error.txt` starts with the same message. - **Invalid applications.** `run directives-invalid`. Exit `0` and `errors=0`. `01-query.json` has `data.motto = "KEEP IT SIMPLE"`, so the misplaced `@uppercase` still wires. `probe.log` has exactly 5 `SchemaParser` - WARNs, each naming its line and column in `scenarios/directives-invalid/schema.graphqls`. + WARNs, each naming its line and column in `compat/scenarios/directives-invalid/schema.graphqls`. `Directive @uppercase at line 12, column 20 ... is applied to FIELD_DEFINITION, but it's declared on OBJECT.` `Directive @deprecated at line 17, column 13 ... is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION.` diff --git a/.claude/skills/verify-tools/features/proxies.md b/.claude/skills/verify-tools/features/proxies.md index b446eb25..529ebe69 100644 --- a/.claude/skills/verify-tools/features/proxies.md +++ b/.claude/skills/verify-tools/features/proxies.md @@ -33,4 +33,4 @@ warning per field that suggests class-based proxies, plus a getter for a field. - The proxy number in `jdk.proxy2.$ProxyN` varies between runs. - CGLIB can't override `final` members, so the resolver and its members must be `open`. A final getter is called on the proxy itself and reads the proxy's empty field, like `count` does. -- The three scenarios share the schema and operations in `scenarios/jdk-proxy/`. +- The three scenarios share the schema and operations in `compat/scenarios/jdk-proxy/`. diff --git a/.claude/skills/verify-tools/features/schema-building.md b/.claude/skills/verify-tools/features/schema-building.md index 177aa820..7e388f79 100644 --- a/.claude/skills/verify-tools/features/schema-building.md +++ b/.claude/skills/verify-tools/features/schema-building.md @@ -34,7 +34,7 @@ signature it tried. Types no root can reach get a warning and are dropped from t Review`. `schema.graphqls` has no `type Review`. - **Missing resolver.** `run bookstore-missing-resolver`. Exit `2`. `summary.txt` has `schema build: FAILED graphql.kickstart.tools.resolver.FieldResolverError: No method or field found as defined in - schema scenarios/bookstore-missing-resolver/extension.graphqls:2`. The 8 listed signatures start with + schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2`. The 8 listed signatures start with `scenarios.AuthorResolver.isbn(scenarios.Book)`, have `scenarios.Book.isbn` sixth, and end with `scenarios.AuthorResolver.getIsbn()`. `build-error.txt` has the stack trace. - **Read-only schema.** `run read-only-schema`. Exit `0` and all three operations diff --git a/.claude/skills/verify-tools/features/type-extensions.md b/.claude/skills/verify-tools/features/type-extensions.md index 51361af7..f8ff2d25 100644 --- a/.claude/skills/verify-tools/features/type-extensions.md +++ b/.claude/skills/verify-tools/features/type-extensions.md @@ -2,23 +2,21 @@ `extend type`, `extend interface`, `extend union`, `extend enum`, `extend input` and `extend scalar` add to the type they extend: fields, interfaces, members, values and directives are merged into one graphql-java type, base first. Where a type -declares an enum value, interface field or union member twice, or an extension applies a non-repeatable directive again, -the first one is kept and a WARN is logged. An object or input field declared twice keeps the last declaration, the type's -own for an input since its extensions are applied first, and logs a WARN that names that declaration. An extension of a different kind than its type is ignored with a WARN. A union, -enum, interface or scalar that only has extensions is built from them. +and its extensions declare a field, enum value or union member twice, or apply a non-repeatable directive again, the build +fails with a `SchemaError` that names the type, the item and its line. An extension of a different kind than its type is +ignored with a WARN. A union, enum, interface or scalar that only has extensions is built from them. ## Sub-features - `ext-interface-fields` merges the fields of `extend interface`, keeping the base `id` and its description. - `ext-implements` makes `extend type Video implements Node` take effect. - `ext-union-members` merges the members of `extend union`. -- `ext-enum-values` merges the values of `extend enum`, keeping the base description of a repeated value. +- `ext-enum-values` merges the values of `extend enum`, keeping the base description. - `ext-lone-enum` builds an enum that only has extensions, from all of them. - `ext-directives` applies the directives of every extension after those of the type. -- `ext-non-repeatable` keeps the first of a non-repeatable directive that an extension applies again, with a WARN. -- `ext-repeats` warns about a repeated interface field, union member and enum value. -- `ext-repeated-fields` warns about an object or input field declared twice, between a type and its extension, between - two extensions and inside one definition, and keeps the last declaration, the type's own for an input. +- `ext-repeats` fails the build on a field, enum value or union member declared twice, or a non-repeatable directive + applied twice, across a type and its extensions. `type-extensions-repeated-fields` shows it for fields, and the + `repeat` and `repeat-directive` cases of `CompatTest` cover every scenario type. - `ext-other-kind` ignores `extend union Note` of `type Note` with a WARN. - `ext-sealed` finds the class of a union member added by `extend union`, and of an implementor added by `extend type X implements Y`, among the subclasses of a sealed class or interface. @@ -36,19 +34,11 @@ enum, interface or scalar that only has extensions is built from them. "The first red". - **Directives.** `schema.graphqls` has `@tag(name : "base") @tag(name : "extension")` on `Node`, `SearchResult`, `Color`, `Filter` and `Article`, and `Article` has `@owner(team : "content")` once, before its `@tag`s. -- **Warnings.** `probe.log` has one WARN each for `Type 'Note' is defined as an object type, but extended as a union`, - `@owner isn't repeatable`, `Type 'Node' declares field 'id'`, `Type 'SearchResult' declares member 'Article'` and - `Type 'Color' declares value 'RED'`. -- **Repeated fields.** `run type-extensions-repeated-fields`. Exit `0`, `errors=0` for both operations, and the same - schema, operation results and `inspect.txt` as master. `01-kept-declarations.json` has `typeAndExtension.name = "a"`, - `twoExtensions = {"id": "b", "name": "c"}`, `oneDefinition.name = "d"` and `echo = "1,t,2,3"`. `inspect.txt` has - `TypeAndExtension.name: From the extension`, `TwoExtensions.name: From the second extension`, - `OneDefinition.name: The second`, `InputTypeAndExtension.id: From the type`, - `InputTwoExtensions.id: From the second extension` and `InputOneDefinition.id: The second`. `probe.log` has exactly six - WARNs, one per type, each `Type '' declares field '' more than once, only the one at line , column 5 in - scenarios/type-extensions-repeated-fields/schema.graphqls is kept.` with lines 18 (`TypeAndExtension`), 32 - (`TwoExtensions`), 39 (`OneDefinition`), 44 (`InputTypeAndExtension`), 63 (`InputTwoExtensions`) and 70 - (`InputOneDefinition`). On master `probe.log` is empty. +- **Warnings.** `probe.log` has `Type 'Note' is defined as an object type, but extended as a union. The extension is + ignored.` and `Schema type was defined but can never be accessed, and can be safely deleted: Note`, and nothing else. +- **Repeated fields.** `run type-extensions-repeated-fields`. Exit `2`, and `summary.txt` has `schema build: FAILED + graphql.kickstart.tools.SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, + column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls.` - **Sealed.** `run type-extensions-sealed`. `01-pets-and-animals.json` has `pets = [{"__typename": "Dog", "name": "Rex"}, {"__typename": "Cat", "lives": 9}]` and `animals` with a `Cow` and a `Horse`, with no WARN in `probe.log`. diff --git a/.claude/skills/verify-tools/probe.sh b/.claude/skills/verify-tools/probe.sh index 89dc2afa..285c5e89 100755 --- a/.claude/skills/verify-tools/probe.sh +++ b/.claude/skills/verify-tools/probe.sh @@ -14,6 +14,7 @@ M2="$WORK/m2" TAIL_M2="$HOME/.m2/repository" EVIDENCE_ROOT="$ROOT/evidence" STAMP="$WORK/installed.stamp" +SCENARIOS="$SKILL_DIR/../../../src/test/kotlin/graphql/kickstart/tools/compat/scenarios" die() { echo "probe: $*" >&2; exit 1; } usage_error() { echo "probe: $*" >&2; exit 64; } @@ -94,7 +95,7 @@ cmd_doctor() { } cmd_list() { - grep -h 'override val name = ' "$SKILL_DIR"/probe/src/main/kotlin/scenarios/*.kt | sed 's/.*= "\(.*\)"/\1/' + grep -h 'override val name = ' "$SCENARIOS"/*.kt | sed 's/.*= "\(.*\)"/\1/' } cmd_run() { @@ -134,7 +135,7 @@ cmd_run() { "-Dprobe.build.dir=$build" "-Dmdep.outputFile=$build/classpath.txt") [[ -z "$gj" ]] || mvn_args+=("-Dgraphql-java.version=$gj") # resources:resources only copies, so an operation deleted from a scenario would keep running - rm -rf "$build"/classes/scenarios/*/ + rm -rf "$build"/classes/compat/scenarios/*/ if ! mvn_isolated "${mvn_args[@]}" compile dependency:build-classpath > "$evidence/maven.log" 2>&1; then grep -E '^\[ERROR\]|^e: ' "$evidence/maven.log" | head -30 >&2 || true die "probe compile failed, see $evidence/maven.log" diff --git a/.claude/skills/verify-tools/probe/pom.xml b/.claude/skills/verify-tools/probe/pom.xml index 8cdeb468..dbb14762 100644 --- a/.claude/skills/verify-tools/probe/pom.xml +++ b/.claude/skills/verify-tools/probe/pom.xml @@ -11,6 +11,7 @@ UNSET 2.3.10 ${project.basedir}/target + ${project.basedir}/../../../.. @@ -64,6 +65,17 @@ ${probe.build.dir} src/main/kotlin + + + src/main/resources + + + ${checkout.dir}/src/test/resources + + compat/scenarios/** + + + org.jetbrains.kotlin @@ -71,6 +83,10 @@ ${kotlin.version} 11 + + src/main/kotlin + ${checkout.dir}/src/test/kotlin/graphql/kickstart/tools/compat/scenarios + diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/probe/Main.kt b/.claude/skills/verify-tools/probe/src/main/kotlin/probe/Main.kt index c17009fa..f010a78a 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/probe/Main.kt +++ b/.claude/skills/verify-tools/probe/src/main/kotlin/probe/Main.kt @@ -7,12 +7,13 @@ import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.compat.scenarios.SCENARIOS +import graphql.kickstart.tools.compat.scenarios.parser import graphql.schema.GraphQLSchema import graphql.schema.idl.SchemaPrinter import org.reactivestreams.Publisher import org.reactivestreams.Subscriber import org.reactivestreams.Subscription -import scenarios.SCENARIOS import java.io.File import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit @@ -91,7 +92,7 @@ private fun usage(problem: String): Nothing { private fun jarOf(clazz: Class<*>) = clazz.protectionDomain.codeSource?.location?.path ?: "unknown" private fun operationFiles(scenario: String): List { - val dir = Thread.currentThread().contextClassLoader.getResource("scenarios/$scenario") + val dir = Thread.currentThread().contextClassLoader.getResource("compat/scenarios/$scenario") ?: return emptyList() return File(dir.toURI()).listFiles { file -> file.extension == "graphql" }!!.sortedBy { it.name } } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Async.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Async.kt similarity index 82% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Async.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Async.kt index 87ba5aa5..dddab4ee 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Async.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Async.kt @@ -1,9 +1,8 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.GraphQLResolver import graphql.kickstart.tools.GraphQLSubscriptionResolver -import graphql.kickstart.tools.SchemaParser import kotlinx.coroutines.delay import kotlinx.coroutines.reactive.publish import org.reactivestreams.Publisher @@ -12,9 +11,8 @@ import java.util.concurrent.CompletableFuture object Async : Scenario { override val name = "async" - override fun parser() = SchemaParser.newParser() - .file("scenarios/async/schema.graphqls") - .resolvers(AsyncQuery(), ShipmentResolver(), AsyncSubscription()) + override val files = listOf("compat/scenarios/async/schema.graphqls") + override val resolvers = listOf(AsyncQuery(), ShipmentResolver(), AsyncSubscription()) } data class Shipment(val id: String) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Bookstore.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Bookstore.kt similarity index 77% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Bookstore.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Bookstore.kt index 7314bcb4..cbeec0ea 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Bookstore.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Bookstore.kt @@ -1,10 +1,10 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.GraphQLContext import graphql.execution.CoercedVariables import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.GraphQLResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.language.StringValue import graphql.language.Value import graphql.schema.Coercing @@ -15,18 +15,20 @@ import java.util.Locale object Bookstore : Scenario { override val name = "bookstore" - override fun parser() = SchemaParser.newParser() - .file("scenarios/bookstore/schema.graphqls") - .resolvers(BookstoreQuery(), AuthorResolver()) + override val files = listOf("compat/scenarios/bookstore/schema.graphqls") + override val resolvers = listOf(BookstoreQuery(), AuthorResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .scalars(dateScalar) } object BookstoreMissingResolver : Scenario { override val name = "bookstore-missing-resolver" - override fun parser() = SchemaParser.newParser() - .files("scenarios/bookstore/schema.graphqls", "scenarios/bookstore-missing-resolver/extension.graphqls") - .resolvers(BookstoreQuery(), AuthorResolver()) + override val files = listOf("compat/scenarios/bookstore/schema.graphqls", "compat/scenarios/bookstore-missing-resolver/extension.graphqls") + override val resolvers = listOf(BookstoreQuery(), AuthorResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .scalars(dateScalar) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextAndEnvironment.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextAndEnvironment.kt similarity index 76% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextAndEnvironment.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextAndEnvironment.kt index fae8041e..934921d6 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextAndEnvironment.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextAndEnvironment.kt @@ -1,19 +1,20 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.ExecutionInput import graphql.GraphQLContext import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.GraphQLResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.DataFetchingEnvironment object ContextAndEnvironment : Scenario { override val name = "context-and-environment" - override fun parser() = SchemaParser.newParser() - .file("scenarios/context-and-environment/schema.graphqls") - .resolvers(ContextAndEnvironmentQuery(), UserResolver()) + override val files = listOf("compat/scenarios/context-and-environment/schema.graphqls") + override val resolvers = listOf(ContextAndEnvironmentQuery(), UserResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().contextClass(AppContext::class).build()) override fun input(builder: ExecutionInput.Builder): ExecutionInput.Builder = @@ -23,9 +24,10 @@ object ContextAndEnvironment : Scenario { object ContextAndEnvironmentInvalid : Scenario { override val name = "context-and-environment-invalid" - override fun parser() = SchemaParser.newParser() - .schemaString("type Query { greeting(name: String!): String! }") - .resolvers(ContextAndEnvironmentInvalidQuery()) + override val files = listOf("compat/scenarios/context-and-environment-invalid/schema.graphqls") + override val resolvers = listOf(ContextAndEnvironmentInvalidQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().contextClass(AppContext::class).build()) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextMisbound.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextMisbound.kt similarity index 75% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextMisbound.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextMisbound.kt index d51223b6..e61ce8d7 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ContextMisbound.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ContextMisbound.kt @@ -1,18 +1,19 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.ExecutionInput import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.GraphQLResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.DataFetchingEnvironment object ContextMisbound : Scenario { override val name = "context-misbound" - override fun parser() = SchemaParser.newParser() - .file("scenarios/context-misbound/schema.graphqls") - .resolvers(ContextMisboundQuery(), MisboundUserResolver()) + override val files = listOf("compat/scenarios/context-misbound/schema.graphqls") + override val resolvers = listOf(ContextMisboundQuery(), MisboundUserResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().contextClass(AppContext::class).build()) override fun input(builder: ExecutionInput.Builder): ExecutionInput.Builder = diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectiveDrift.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt similarity index 76% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectiveDrift.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt index 53ff6ca6..26ca21de 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectiveDrift.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt @@ -1,19 +1,19 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.Scalars import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema -import probe.dumpDirectives object DirectiveDrift : Scenario { override val name = "directive-drift" - override fun parser() = SchemaParser.newParser() - .file("scenarios/directive-drift/schema.graphqls") - .resolvers(DirectiveDriftQuery()) + override val files = listOf("compat/scenarios/directive-drift/schema.graphqls") + override val resolvers = listOf(DirectiveDriftQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary("Dog", DriftDog::class.java) .scalars(stringScalar("Date"), stringScalar("Money")) .options(SchemaParserOptions.newOptions().allowUndeclaredDirectives(true).build()) @@ -24,9 +24,8 @@ object DirectiveDrift : Scenario { object DirectiveDriftUndeclared : Scenario { override val name = "directive-drift-undeclared" - override fun parser() = SchemaParser.newParser() - .file("scenarios/directive-drift-undeclared/schema.graphqls") - .resolvers(DirectiveDriftOneField()) + override val files = listOf("compat/scenarios/directive-drift-undeclared/schema.graphqls") + override val resolvers = listOf(DirectiveDriftOneField()) } private fun stringScalar(name: String) = GraphQLScalarType.newScalar().name(name).coercing(Scalars.GraphQLString.coercing).build() diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/probe/DirectiveDump.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDump.kt similarity index 95% rename from .claude/skills/verify-tools/probe/src/main/kotlin/probe/DirectiveDump.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDump.kt index 119cff88..abe336c0 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/probe/DirectiveDump.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDump.kt @@ -1,4 +1,4 @@ -package probe +package graphql.kickstart.tools.compat.scenarios import graphql.language.AstPrinter import graphql.language.Node @@ -41,7 +41,7 @@ private fun StringBuilder.section(label: String, applied: List - appendLine(" applied @${directive.name} description=${directive.description} definition=${directive.definition?.sourceLocation?.let { "${it.line}:${it.column}" }}") + appendLine(" applied @${directive.name} description=${directive.description} definition=${directive.definition.sourceLocation?.let { "${it.line}:${it.column}" }}") directive.arguments.forEach { appendLine(" ${it.name}: ${GraphQLTypeUtil.simplePrint(it.type)} = ${describe(it.argumentValue)} description=${it.description}") } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Directives.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Directives.kt similarity index 81% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Directives.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Directives.kt index f4888d92..0d8aa9a8 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Directives.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Directives.kt @@ -1,7 +1,7 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.relay.Connection import graphql.relay.SimpleListConnection import graphql.schema.DataFetcherFactories @@ -13,9 +13,10 @@ import graphql.schema.idl.SchemaDirectiveWiringEnvironment object Directives : Scenario { override val name = "directives" - override fun parser() = SchemaParser.newParser() - .file("scenarios/directives/schema.graphqls") - .resolvers(DirectivesQuery()) + override val files = listOf("compat/scenarios/directives/schema.graphqls") + override val resolvers = listOf(DirectivesQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .directive("uppercase", UppercaseDirective()) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectivesInvalid.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectivesInvalid.kt similarity index 53% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectivesInvalid.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectivesInvalid.kt index d05c34c7..572c42f9 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/DirectivesInvalid.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectivesInvalid.kt @@ -1,14 +1,15 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object DirectivesInvalid : Scenario { override val name = "directives-invalid" - override fun parser() = SchemaParser.newParser() - .file("scenarios/directives-invalid/schema.graphqls") - .resolvers(DirectivesInvalidQuery()) + override val files = listOf("compat/scenarios/directives-invalid/schema.graphqls") + override val resolvers = listOf(DirectivesInvalidQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .directive("uppercase", UppercaseDirective()) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/GenericInputResolver.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/GenericInputResolver.kt similarity index 66% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/GenericInputResolver.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/GenericInputResolver.kt index ad4dc778..06540a9f 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/GenericInputResolver.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/GenericInputResolver.kt @@ -1,14 +1,12 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser object GenericInputResolver : Scenario { override val name = "generic-input-resolver" - override fun parser() = SchemaParser.newParser() - .file("scenarios/generic-input-resolver/schema.graphqls") - .resolvers(GreetingQuery()) + override val files = listOf("compat/scenarios/generic-input-resolver/schema.graphqls") + override val resolvers = listOf(GreetingQuery()) } data class GreetingInput(val name: String) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Inputs.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Inputs.kt similarity index 81% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Inputs.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Inputs.kt index 3665d9b7..6e3af064 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Inputs.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Inputs.kt @@ -1,8 +1,8 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLMutationResolver import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.DataFetchingEnvironment import java.util.Optional @@ -10,9 +10,10 @@ import java.util.Optional object Inputs : Scenario { override val name = "inputs" - override fun parser() = SchemaParser.newParser() - .file("scenarios/inputs/schema.graphqls") - .resolvers(InputsQuery(), InputsMutation()) + override val files = listOf("compat/scenarios/inputs/schema.graphqls") + override val resolvers = listOf(InputsQuery(), InputsMutation()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().inputArgumentOptionalDetectOmission(true).build()) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/JdkProxy.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/JdkProxy.kt similarity index 59% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/JdkProxy.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/JdkProxy.kt index e06bddf7..a1fa0da6 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/JdkProxy.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/JdkProxy.kt @@ -1,28 +1,30 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser import org.springframework.aop.framework.ProxyFactory import org.springframework.aop.support.AopUtils object JdkProxy : Scenario { override val name = "jdk-proxy" - override fun parser() = proxyParser(proxy(proxyTargetClass = false).also { check(AopUtils.isJdkDynamicProxy(it)) }) + override val files = listOf("compat/scenarios/jdk-proxy/schema.graphqls") + override val resolvers get() = listOf(proxy(proxyTargetClass = false).also { check(AopUtils.isJdkDynamicProxy(it)) }) } object JdkProxyCglib : Scenario { override val name = "jdk-proxy-cglib" override val operations = "jdk-proxy" - override fun parser() = proxyParser(proxy(proxyTargetClass = true).also { check(AopUtils.isCglibProxy(it)) }) + override val files = JdkProxy.files + override val resolvers get() = listOf(proxy(proxyTargetClass = true).also { check(AopUtils.isCglibProxy(it)) }) } object JdkProxyPlain : Scenario { override val name = "jdk-proxy-plain" override val operations = "jdk-proxy" - override fun parser() = proxyParser(ProxiedQuery()) + override val files = JdkProxy.files + override val resolvers = listOf(ProxiedQuery()) } open class ProxiedQuery : GraphQLQueryResolver { @@ -36,7 +38,3 @@ open class ProxiedQuery : GraphQLQueryResolver { private fun proxy(proxyTargetClass: Boolean) = ProxyFactory(ProxiedQuery()).apply { isProxyTargetClass = proxyTargetClass }.proxy as GraphQLQueryResolver - -private fun proxyParser(resolver: GraphQLQueryResolver) = SchemaParser.newParser() - .file("scenarios/jdk-proxy/schema.graphqls") - .resolvers(resolver) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedUnions.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedUnions.kt similarity index 58% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedUnions.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedUnions.kt index 1fd7001c..14805c87 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedUnions.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedUnions.kt @@ -1,14 +1,15 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object NestedUnions : Scenario { override val name = "nested-unions" - override fun parser() = SchemaParser.newParser() - .file("scenarios/nested-unions/schema.graphqls") - .resolvers(NestedUnionsQuery()) + override val files = listOf("compat/scenarios/nested-unions/schema.graphqls") + override val resolvers = listOf(NestedUnionsQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary(NestedUnionsQuery.Book::class.java, NestedUnionsQuery.Movie::class.java) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappers.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappers.kt similarity index 89% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappers.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappers.kt index 440e2d65..eda6f9fd 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappers.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappers.kt @@ -1,9 +1,9 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.GraphQL import graphql.execution.DefaultValueUnboxer import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.ExecutionInput import graphql.schema.DataFetchingEnvironment @@ -16,9 +16,10 @@ import java.util.concurrent.CompletableFuture.completedFuture object NestedWrappers : Scenario { override val name = "nested-wrappers" - override fun parser() = SchemaParser.newParser() - .file("scenarios/nested-wrappers/schema.graphqls") - .resolvers(NestedWrappersQuery()) + override val files = listOf("compat/scenarios/nested-wrappers/schema.graphqls") + override val resolvers = listOf(NestedWrappersQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().genericWrappers(tryWrapper).build()) override fun input(builder: ExecutionInput.Builder): ExecutionInput.Builder = builder.dataLoaderRegistry( @@ -92,9 +93,8 @@ class NestedWrappersQuery : GraphQLQueryResolver { object NestedWrappersSuspend : Scenario { override val name = "nested-wrappers-suspend" - override fun parser() = SchemaParser.newParser() - .file("scenarios/nested-wrappers-suspend/schema.graphqls") - .resolvers(NestedWrappersSuspendQuery()) + override val files = listOf("compat/scenarios/nested-wrappers-suspend/schema.graphqls") + override val resolvers = listOf(NestedWrappersSuspendQuery()) } class NestedWrappersSuspendQuery : GraphQLQueryResolver { diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappersExact.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappersExact.kt similarity index 91% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappersExact.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappersExact.kt index d1c111ff..c326a28d 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/NestedWrappersExact.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/NestedWrappersExact.kt @@ -1,8 +1,8 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.GraphQLContext import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.Coercing import graphql.schema.CoercingSerializeException @@ -18,9 +18,10 @@ import java.util.concurrent.FutureTask object NestedWrappersExact : Scenario { override val name = "nested-wrappers-exact" - override fun parser() = SchemaParser.newParser() - .file("scenarios/nested-wrappers-exact/schema.graphqls") - .resolvers(NestedWrappersExactQuery()) + override val files = listOf("compat/scenarios/nested-wrappers-exact/schema.graphqls") + override val resolvers = listOf(NestedWrappersExactQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .scalars(dateTime) .options(SchemaParserOptions.newOptions().genericWrappers(tryWrapper, batchWrapper, boxWrapper, specialBoxWrapper, laterWrapper).build()) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/OptionalResults.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/OptionalResults.kt similarity index 74% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/OptionalResults.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/OptionalResults.kt index ddec6328..4892da21 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/OptionalResults.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/OptionalResults.kt @@ -1,41 +1,36 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.GraphQLError import graphql.execution.DataFetcherResult import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser import java.util.Optional object OptionalResults : Scenario { override val name = "optional-results" - override fun parser() = SchemaParser.newParser() - .file("scenarios/optional-results/schema.graphqls") - .resolvers(OptionalResultsQuery()) + override val files = listOf("compat/scenarios/optional-results/schema.graphqls") + override val resolvers = listOf(OptionalResultsQuery()) } object OptionalResultsMixed : Scenario { override val name = "optional-results-mixed" - override fun parser() = SchemaParser.newParser() - .file("scenarios/optional-results-mixed/schema.graphqls") - .resolvers(OptionalResultsMixedQuery()) + override val files = listOf("compat/scenarios/optional-results-mixed/schema.graphqls") + override val resolvers = listOf(OptionalResultsMixedQuery()) } object OptionalResultsList : Scenario { override val name = "optional-results-list" - override fun parser() = SchemaParser.newParser() - .file("scenarios/optional-results-list/schema.graphqls") - .resolvers(OptionalResultsListQuery()) + override val files = listOf("compat/scenarios/optional-results-list/schema.graphqls") + override val resolvers = listOf(OptionalResultsListQuery()) } object OptionalResultsNested : Scenario { override val name = "optional-results-nested" - override fun parser() = SchemaParser.newParser() - .file("scenarios/optional-results-nested/schema.graphqls") - .resolvers(OptionalResultsNestedQuery()) + override val files = listOf("compat/scenarios/optional-results-nested/schema.graphqls") + override val resolvers = listOf(OptionalResultsNestedQuery()) } class OptionalResultsPayload(val data: String) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Options.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Options.kt similarity index 68% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Options.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Options.kt index 108ccce5..bedc0773 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Options.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Options.kt @@ -1,17 +1,18 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.resolver.MissingResolverDataFetcherProvider -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.DataFetcher object Options : Scenario { override val name = "options" - override fun parser() = SchemaParser.newParser() - .file("scenarios/options/schema.graphqls") - .resolvers(OptionsQuery()) + override val files = listOf("compat/scenarios/options/schema.graphqls") + override val resolvers = listOf(OptionsQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .options( SchemaParserOptions.newOptions() .missingResolverDataFetcherProvider(MissingResolverDataFetcherProvider { field, _ -> diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Polymorphism.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Polymorphism.kt similarity index 73% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Polymorphism.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Polymorphism.kt index bd4b6778..e1cb43b4 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Polymorphism.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Polymorphism.kt @@ -1,14 +1,15 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object Polymorphism : Scenario { override val name = "polymorphism" - override fun parser() = SchemaParser.newParser() - .file("scenarios/polymorphism/schema.graphqls") - .resolvers(PolymorphismQuery()) + override val files = listOf("compat/scenarios/polymorphism/schema.graphqls") + override val resolvers = listOf(PolymorphismQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary(Novel::class.java) .dictionary("Writer", WriterEntity::class.java) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ReadOnlySchema.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ReadOnlySchema.kt similarity index 76% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ReadOnlySchema.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ReadOnlySchema.kt index 9a6b9763..fccbb6f0 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ReadOnlySchema.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ReadOnlySchema.kt @@ -1,15 +1,17 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLMutationResolver import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object ReadOnlySchema : Scenario { override val name = "read-only-schema" - override fun parser() = SchemaParser.newParser() - .file("scenarios/read-only-schema/schema.graphqls") - .resolvers(ReadOnlyQuery(), ReadOnlyMutation()) + override val files = listOf("compat/scenarios/read-only-schema/schema.graphqls") + override val resolvers = listOf(ReadOnlyQuery(), ReadOnlyMutation()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary("Dog", ShelterDog::class.java) .dictionary("Cat", ShelterCat::class.java) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/RecursiveInputs.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/RecursiveInputs.kt similarity index 69% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/RecursiveInputs.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/RecursiveInputs.kt index 0c68fe7d..5a7c220e 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/RecursiveInputs.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/RecursiveInputs.kt @@ -1,14 +1,15 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object RecursiveInputs : Scenario { override val name = "recursive-inputs" - override fun parser() = SchemaParser.newParser() - .file("scenarios/recursive-inputs/schema.graphqls") - .resolvers(RecursiveInputsQuery()) + override val files = listOf("compat/scenarios/recursive-inputs/schema.graphqls") + override val resolvers = listOf(RecursiveInputsQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary(RangeInput::class, LimitUnit::class) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarArgs.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarArgs.kt similarity index 92% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarArgs.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarArgs.kt index c6fe7a7d..54e8b569 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarArgs.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarArgs.kt @@ -1,4 +1,4 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import com.fasterxml.jackson.annotation.JsonIdentityInfo import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators import graphql.GraphQLContext import graphql.execution.CoercedVariables import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.language.StringValue import graphql.language.Value import graphql.schema.Coercing @@ -17,10 +17,11 @@ import java.util.Optional object ScalarArgs : Scenario { override val name = "scalar-args" - override fun parser() = SchemaParser.newParser() - .file("scenarios/scalar-args/schema.graphqls") + override val files = listOf("compat/scenarios/scalar-args/schema.graphqls") + override val resolvers = listOf(ScalarArgsQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .scalars(tagScalar, tokenScalar, typedTokenScalar, wrappedTokenScalar, idTokenScalar) - .resolvers(ScalarArgsQuery()) } class Tag private constructor(val value: String) { diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarDirectives.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarDirectives.kt similarity index 82% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarDirectives.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarDirectives.kt index abd40c93..a6a30f38 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/ScalarDirectives.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/ScalarDirectives.kt @@ -1,8 +1,8 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.Scalars import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.schema.GraphQLScalarType import graphql.schema.idl.SchemaDirectiveWiring import graphql.schema.idl.SchemaDirectiveWiringEnvironment @@ -10,9 +10,10 @@ import graphql.schema.idl.SchemaDirectiveWiringEnvironment object ScalarDirectives : Scenario { override val name = "scalar-directives" - override fun parser() = SchemaParser.newParser() - .file("scenarios/scalar-directives/schema.graphqls") - .resolvers(ScalarDirectivesQuery()) + override val files = listOf("compat/scenarios/scalar-directives/schema.graphqls") + override val resolvers = listOf(ScalarDirectivesQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .scalars( string("Date"), GraphQLScalarType.newScalar(string("DateTime")).description("An RFC-3339 date-time") diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Scenario.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Scenario.kt similarity index 61% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Scenario.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Scenario.kt index 89b59d55..fda85626 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Scenario.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Scenario.kt @@ -1,7 +1,8 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.ExecutionInput import graphql.GraphQL +import graphql.kickstart.tools.GraphQLResolver import graphql.kickstart.tools.SchemaParser import graphql.kickstart.tools.SchemaParserBuilder import graphql.schema.GraphQLSchema @@ -11,7 +12,11 @@ sealed interface Scenario { val operations: String get() = name - fun parser(): SchemaParserBuilder + val files: List + + val resolvers: List> + + fun configure(builder: SchemaParserBuilder): SchemaParserBuilder = builder fun schema(parser: SchemaParser): GraphQLSchema = parser.makeExecutableSchema() @@ -22,4 +27,7 @@ sealed interface Scenario { fun input(builder: ExecutionInput.Builder): ExecutionInput.Builder = builder } +fun Scenario.parser(resolvers: List> = this.resolvers): SchemaParserBuilder = + configure(SchemaParser.newParser().files(*files.toTypedArray()).resolvers(resolvers)) + val SCENARIOS: List = Scenario::class.sealedSubclasses.mapNotNull { it.objectInstance }.sortedBy { it.name } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Sourceless.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Sourceless.kt similarity index 74% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Sourceless.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Sourceless.kt index f14c4ec2..a0f19132 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/Sourceless.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/Sourceless.kt @@ -1,20 +1,21 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.ExecutionInput import graphql.GraphQLContext import graphql.execution.DataFetcherResult import graphql.kickstart.tools.GraphQLQueryResolver import graphql.kickstart.tools.GraphQLResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.kickstart.tools.SchemaParserOptions import graphql.schema.DataFetchingEnvironment object Sourceless : Scenario { override val name = "sourceless" - override fun parser() = SchemaParser.newParser() - .file("scenarios/sourceless/schema.graphqls") - .resolvers(SourcelessQuery(), SourcelessFolderResolver(), SourcelessImageResolver()) + override val files = listOf("compat/scenarios/sourceless/schema.graphqls") + override val resolvers = listOf(SourcelessQuery(), SourcelessFolderResolver(), SourcelessImageResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().contextClass(AppContext::class).build()) override fun input(builder: ExecutionInput.Builder): ExecutionInput.Builder = @@ -24,26 +25,25 @@ object Sourceless : Scenario { object SourcelessShadowed : Scenario { override val name = "sourceless-shadowed" - override fun parser() = SchemaParser.newParser() - .file("scenarios/sourceless-shadowed/schema.graphqls") - .resolvers(SourcelessQuery(), SourcelessFolderResolver(), ShadowedImageResolver()) + override val files = listOf("compat/scenarios/sourceless-shadowed/schema.graphqls") + override val resolvers = listOf(SourcelessQuery(), SourcelessFolderResolver(), ShadowedImageResolver()) } object SourcelessUnimplemented : Scenario { override val name = "sourceless-unimplemented" - override fun parser() = SchemaParser.newParser() - .file("scenarios/sourceless-unimplemented/schema.graphqls") - .resolvers(SourcelessQuery(), SourcelessFolderResolver(), HelperImageResolver()) + override val files = listOf("compat/scenarios/sourceless-unimplemented/schema.graphqls") + override val resolvers = listOf(SourcelessQuery(), SourcelessFolderResolver(), HelperImageResolver()) + + override fun configure(builder: SchemaParserBuilder) = builder .options(SchemaParserOptions.newOptions().allowUnimplementedResolvers(true).build()) } object SourcelessMisbound : Scenario { override val name = "sourceless-misbound" - override fun parser() = SchemaParser.newParser() - .file("scenarios/sourceless-misbound/schema.graphqls") - .resolvers(SourcelessQuery(), SourcelessFolderResolver(), MisboundImageResolver()) + override val files = listOf("compat/scenarios/sourceless-misbound/schema.graphqls") + override val resolvers = listOf(SourcelessQuery(), SourcelessFolderResolver(), MisboundImageResolver()) } class SourcelessFolder(val supportedFileTypes: List) diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensions.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensions.kt similarity index 78% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensions.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensions.kt index a7f10476..06a7b74c 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensions.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensions.kt @@ -1,14 +1,15 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder object TypeExtensions : Scenario { override val name = "type-extensions" - override fun parser() = SchemaParser.newParser() - .file("scenarios/type-extensions/schema.graphqls") - .resolvers(TypeExtensionsQuery()) + override val files = listOf("compat/scenarios/type-extensions/schema.graphqls") + override val resolvers = listOf(TypeExtensionsQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .dictionary(Article::class.java, Video::class.java) } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsInputOrder.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsInputOrder.kt similarity index 74% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsInputOrder.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsInputOrder.kt index 05dcfda3..1892dfdb 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsInputOrder.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsInputOrder.kt @@ -1,16 +1,14 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLSchema object TypeExtensionsInputOrder : Scenario { override val name = "type-extensions-input-order" - override fun parser() = SchemaParser.newParser() - .file("scenarios/type-extensions-input-order/schema.graphqls") - .resolvers(TypeExtensionsInputOrderQuery()) + override val files = listOf("compat/scenarios/type-extensions-input-order/schema.graphqls") + override val resolvers = listOf(TypeExtensionsInputOrderQuery()) override fun inspect(schema: GraphQLSchema) = "Filter fields: ${(schema.getType("Filter") as GraphQLInputObjectType).fieldDefinitions.map { it.name }}" } diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsRepeatedFields.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsRepeatedFields.kt similarity index 88% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsRepeatedFields.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsRepeatedFields.kt index 6144b6e9..a33df7f4 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsRepeatedFields.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsRepeatedFields.kt @@ -1,7 +1,6 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema @@ -9,9 +8,8 @@ import graphql.schema.GraphQLSchema object TypeExtensionsRepeatedFields : Scenario { override val name = "type-extensions-repeated-fields" - override fun parser() = SchemaParser.newParser() - .file("scenarios/type-extensions-repeated-fields/schema.graphqls") - .resolvers(TypeExtensionsRepeatedFieldsQuery()) + override val files = listOf("compat/scenarios/type-extensions-repeated-fields/schema.graphqls") + override val resolvers = listOf(TypeExtensionsRepeatedFieldsQuery()) override fun inspect(schema: GraphQLSchema): String { val objects = listOf("TypeAndExtension", "TwoExtensions", "OneDefinition").map { diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsSealed.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsSealed.kt similarity index 72% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsSealed.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsSealed.kt index e5544f32..6ebc9b52 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/TypeExtensionsSealed.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/TypeExtensionsSealed.kt @@ -1,14 +1,12 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser object TypeExtensionsSealed : Scenario { override val name = "type-extensions-sealed" - override fun parser() = SchemaParser.newParser() - .file("scenarios/type-extensions-sealed/schema.graphqls") - .resolvers(TypeExtensionsSealedQuery()) + override val files = listOf("compat/scenarios/type-extensions-sealed/schema.graphqls") + override val resolvers = listOf(TypeExtensionsSealedQuery()) } sealed class Pet { diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/UnmappedInputs.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/UnmappedInputs.kt similarity index 76% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/UnmappedInputs.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/UnmappedInputs.kt index 10dba5eb..e58236f9 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/UnmappedInputs.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/UnmappedInputs.kt @@ -1,16 +1,14 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import com.fasterxml.jackson.annotation.JsonIgnoreProperties import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser import java.util.Optional object UnmappedInputs : Scenario { override val name = "unmapped-inputs" - override fun parser() = SchemaParser.newParser() - .file("scenarios/unmapped-inputs/schema.graphqls") - .resolvers(UnmappedInputsQuery()) + override val files = listOf("compat/scenarios/unmapped-inputs/schema.graphqls") + override val resolvers = listOf(UnmappedInputsQuery()) } class IgnoredInput { diff --git a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/WiringShapes.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/WiringShapes.kt similarity index 89% rename from .claude/skills/verify-tools/probe/src/main/kotlin/scenarios/WiringShapes.kt rename to src/test/kotlin/graphql/kickstart/tools/compat/scenarios/WiringShapes.kt index 840c74a7..849b15d6 100644 --- a/.claude/skills/verify-tools/probe/src/main/kotlin/scenarios/WiringShapes.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/WiringShapes.kt @@ -1,7 +1,7 @@ -package scenarios +package graphql.kickstart.tools.compat.scenarios import graphql.kickstart.tools.GraphQLQueryResolver -import graphql.kickstart.tools.SchemaParser +import graphql.kickstart.tools.SchemaParserBuilder import graphql.schema.* import graphql.schema.idl.SchemaDirectiveWiring import graphql.schema.idl.SchemaDirectiveWiringEnvironment @@ -9,9 +9,10 @@ import graphql.schema.idl.SchemaDirectiveWiringEnvironment object WiringShapes : Scenario { override val name = "wiring-shapes" - override fun parser() = SchemaParser.newParser() - .file("scenarios/wiring-shapes/schema.graphqls") - .resolvers(WiringShapesQuery()) + override val files = listOf("compat/scenarios/wiring-shapes/schema.graphqls") + override val resolvers = listOf(WiringShapesQuery()) + + override fun configure(builder: SchemaParserBuilder) = builder .directive("inspect", InspectWiring()) .directive("required", RequiredWiring()) .directive("described", DescribedWiring()) diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/async/01-query.graphql b/src/test/resources/compat/scenarios/async/01-query.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/async/01-query.graphql rename to src/test/resources/compat/scenarios/async/01-query.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/async/02-subscription.graphql b/src/test/resources/compat/scenarios/async/02-subscription.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/async/02-subscription.graphql rename to src/test/resources/compat/scenarios/async/02-subscription.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/async/schema.graphqls b/src/test/resources/compat/scenarios/async/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/async/schema.graphqls rename to src/test/resources/compat/scenarios/async/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore-missing-resolver/extension.graphqls b/src/test/resources/compat/scenarios/bookstore-missing-resolver/extension.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore-missing-resolver/extension.graphqls rename to src/test/resources/compat/scenarios/bookstore-missing-resolver/extension.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/01-books.graphql b/src/test/resources/compat/scenarios/bookstore/01-books.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/01-books.graphql rename to src/test/resources/compat/scenarios/bookstore/01-books.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/02-book-by-id.graphql b/src/test/resources/compat/scenarios/bookstore/02-book-by-id.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/02-book-by-id.graphql rename to src/test/resources/compat/scenarios/bookstore/02-book-by-id.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/02-book-by-id.variables.json b/src/test/resources/compat/scenarios/bookstore/02-book-by-id.variables.json similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/02-book-by-id.variables.json rename to src/test/resources/compat/scenarios/bookstore/02-book-by-id.variables.json diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/schema.graphqls b/src/test/resources/compat/scenarios/bookstore/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/bookstore/schema.graphqls rename to src/test/resources/compat/scenarios/bookstore/schema.graphqls diff --git a/src/test/resources/compat/scenarios/context-and-environment-invalid/schema.graphqls b/src/test/resources/compat/scenarios/context-and-environment-invalid/schema.graphqls new file mode 100644 index 00000000..89a7d1a7 --- /dev/null +++ b/src/test/resources/compat/scenarios/context-and-environment-invalid/schema.graphqls @@ -0,0 +1,3 @@ +type Query { + greeting(name: String!): String! +} diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-and-environment/01-query.graphql b/src/test/resources/compat/scenarios/context-and-environment/01-query.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-and-environment/01-query.graphql rename to src/test/resources/compat/scenarios/context-and-environment/01-query.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-and-environment/schema.graphqls b/src/test/resources/compat/scenarios/context-and-environment/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-and-environment/schema.graphqls rename to src/test/resources/compat/scenarios/context-and-environment/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/01-without-argument.graphql b/src/test/resources/compat/scenarios/context-misbound/01-without-argument.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/01-without-argument.graphql rename to src/test/resources/compat/scenarios/context-misbound/01-without-argument.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/02-with-argument.graphql b/src/test/resources/compat/scenarios/context-misbound/02-with-argument.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/02-with-argument.graphql rename to src/test/resources/compat/scenarios/context-misbound/02-with-argument.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/03-context-and-correct.graphql b/src/test/resources/compat/scenarios/context-misbound/03-context-and-correct.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/03-context-and-correct.graphql rename to src/test/resources/compat/scenarios/context-misbound/03-context-and-correct.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/04-type-resolver.graphql b/src/test/resources/compat/scenarios/context-misbound/04-type-resolver.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/04-type-resolver.graphql rename to src/test/resources/compat/scenarios/context-misbound/04-type-resolver.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/schema.graphqls b/src/test/resources/compat/scenarios/context-misbound/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/context-misbound/schema.graphqls rename to src/test/resources/compat/scenarios/context-misbound/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directive-drift-undeclared/schema.graphqls b/src/test/resources/compat/scenarios/directive-drift-undeclared/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directive-drift-undeclared/schema.graphqls rename to src/test/resources/compat/scenarios/directive-drift-undeclared/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directive-drift/schema.graphqls b/src/test/resources/compat/scenarios/directive-drift/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directive-drift/schema.graphqls rename to src/test/resources/compat/scenarios/directive-drift/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives-invalid/01-query.graphql b/src/test/resources/compat/scenarios/directives-invalid/01-query.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives-invalid/01-query.graphql rename to src/test/resources/compat/scenarios/directives-invalid/01-query.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives-invalid/schema.graphqls b/src/test/resources/compat/scenarios/directives-invalid/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives-invalid/schema.graphqls rename to src/test/resources/compat/scenarios/directives-invalid/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/01-uppercase.graphql b/src/test/resources/compat/scenarios/directives/01-uppercase.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/01-uppercase.graphql rename to src/test/resources/compat/scenarios/directives/01-uppercase.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/02-deprecated.graphql b/src/test/resources/compat/scenarios/directives/02-deprecated.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/02-deprecated.graphql rename to src/test/resources/compat/scenarios/directives/02-deprecated.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/03-connection.graphql b/src/test/resources/compat/scenarios/directives/03-connection.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/03-connection.graphql rename to src/test/resources/compat/scenarios/directives/03-connection.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/schema.graphqls b/src/test/resources/compat/scenarios/directives/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/directives/schema.graphqls rename to src/test/resources/compat/scenarios/directives/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/01-plain.graphql b/src/test/resources/compat/scenarios/generic-input-resolver/01-plain.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/01-plain.graphql rename to src/test/resources/compat/scenarios/generic-input-resolver/01-plain.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/02-generic.graphql b/src/test/resources/compat/scenarios/generic-input-resolver/02-generic.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/02-generic.graphql rename to src/test/resources/compat/scenarios/generic-input-resolver/02-generic.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/schema.graphqls b/src/test/resources/compat/scenarios/generic-input-resolver/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/generic-input-resolver/schema.graphqls rename to src/test/resources/compat/scenarios/generic-input-resolver/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/01-search.graphql b/src/test/resources/compat/scenarios/inputs/01-search.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/01-search.graphql rename to src/test/resources/compat/scenarios/inputs/01-search.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/02-nickname.graphql b/src/test/resources/compat/scenarios/inputs/02-nickname.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/02-nickname.graphql rename to src/test/resources/compat/scenarios/inputs/02-nickname.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/03-add-book.graphql b/src/test/resources/compat/scenarios/inputs/03-add-book.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/03-add-book.graphql rename to src/test/resources/compat/scenarios/inputs/03-add-book.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/03-add-book.variables.json b/src/test/resources/compat/scenarios/inputs/03-add-book.variables.json similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/03-add-book.variables.json rename to src/test/resources/compat/scenarios/inputs/03-add-book.variables.json diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/04-invalid-enum.graphql b/src/test/resources/compat/scenarios/inputs/04-invalid-enum.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/04-invalid-enum.graphql rename to src/test/resources/compat/scenarios/inputs/04-invalid-enum.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/schema.graphqls b/src/test/resources/compat/scenarios/inputs/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/inputs/schema.graphqls rename to src/test/resources/compat/scenarios/inputs/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/jdk-proxy/01-query.graphql b/src/test/resources/compat/scenarios/jdk-proxy/01-query.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/jdk-proxy/01-query.graphql rename to src/test/resources/compat/scenarios/jdk-proxy/01-query.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/jdk-proxy/schema.graphqls b/src/test/resources/compat/scenarios/jdk-proxy/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/jdk-proxy/schema.graphqls rename to src/test/resources/compat/scenarios/jdk-proxy/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-unions/01-results.graphql b/src/test/resources/compat/scenarios/nested-unions/01-results.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-unions/01-results.graphql rename to src/test/resources/compat/scenarios/nested-unions/01-results.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-unions/schema.graphqls b/src/test/resources/compat/scenarios/nested-unions/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-unions/schema.graphqls rename to src/test/resources/compat/scenarios/nested-unions/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/01-dates.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/01-dates.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/01-dates.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/01-dates.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/02-tried-dates.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/02-tried-dates.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/02-tried-dates.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/02-tried-dates.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/03-plain-future-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/03-plain-future-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/03-plain-future-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/03-plain-future-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/04-batched-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/04-batched-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/04-batched-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/04-batched-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/05-boxed-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/05-boxed-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/05-boxed-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/05-boxed-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/06-later-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/06-later-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/06-later-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/06-later-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/07-suspend-plain-future-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-exact/07-suspend-plain-future-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/07-suspend-plain-future-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-exact/07-suspend-plain-future-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/schema.graphqls b/src/test/resources/compat/scenarios/nested-wrappers-exact/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-exact/schema.graphqls rename to src/test/resources/compat/scenarios/nested-wrappers-exact/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/01-nullable-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-suspend/01-nullable-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/01-nullable-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-suspend/01-nullable-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/02-non-null-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers-suspend/02-non-null-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/02-non-null-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-suspend/02-non-null-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/03-type-variable-strings.graphql b/src/test/resources/compat/scenarios/nested-wrappers-suspend/03-type-variable-strings.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/03-type-variable-strings.graphql rename to src/test/resources/compat/scenarios/nested-wrappers-suspend/03-type-variable-strings.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/schema.graphqls b/src/test/resources/compat/scenarios/nested-wrappers-suspend/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers-suspend/schema.graphqls rename to src/test/resources/compat/scenarios/nested-wrappers-suspend/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/01-payload.graphql b/src/test/resources/compat/scenarios/nested-wrappers/01-payload.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/01-payload.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/01-payload.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/02-payloads.graphql b/src/test/resources/compat/scenarios/nested-wrappers/02-payloads.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/02-payloads.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/02-payloads.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/03-payload-strings.graphql b/src/test/resources/compat/scenarios/nested-wrappers/03-payload-strings.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/03-payload-strings.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/03-payload-strings.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/04-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers/04-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/04-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/04-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/05-item-names.graphql b/src/test/resources/compat/scenarios/nested-wrappers/05-item-names.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/05-item-names.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/05-item-names.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/06-future-of-future.graphql b/src/test/resources/compat/scenarios/nested-wrappers/06-future-of-future.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/06-future-of-future.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/06-future-of-future.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/07-future-of-tries.graphql b/src/test/resources/compat/scenarios/nested-wrappers/07-future-of-tries.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/07-future-of-tries.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/07-future-of-tries.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/08-tries-of-futures.graphql b/src/test/resources/compat/scenarios/nested-wrappers/08-tries-of-futures.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/08-tries-of-futures.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/08-tries-of-futures.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/09-loaded-items.graphql b/src/test/resources/compat/scenarios/nested-wrappers/09-loaded-items.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/09-loaded-items.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/09-loaded-items.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/10-failed-try-in-list.graphql b/src/test/resources/compat/scenarios/nested-wrappers/10-failed-try-in-list.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/10-failed-try-in-list.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/10-failed-try-in-list.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/11-failed-future-in-list.graphql b/src/test/resources/compat/scenarios/nested-wrappers/11-failed-future-in-list.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/11-failed-future-in-list.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/11-failed-future-in-list.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/12-controls.graphql b/src/test/resources/compat/scenarios/nested-wrappers/12-controls.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/12-controls.graphql rename to src/test/resources/compat/scenarios/nested-wrappers/12-controls.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/schema.graphqls b/src/test/resources/compat/scenarios/nested-wrappers/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/nested-wrappers/schema.graphqls rename to src/test/resources/compat/scenarios/nested-wrappers/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-list/01-optional-result-list.graphql b/src/test/resources/compat/scenarios/optional-results-list/01-optional-result-list.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-list/01-optional-result-list.graphql rename to src/test/resources/compat/scenarios/optional-results-list/01-optional-result-list.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-list/schema.graphqls b/src/test/resources/compat/scenarios/optional-results-list/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-list/schema.graphqls rename to src/test/resources/compat/scenarios/optional-results-list/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/01-optional-result.graphql b/src/test/resources/compat/scenarios/optional-results-mixed/01-optional-result.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/01-optional-result.graphql rename to src/test/resources/compat/scenarios/optional-results-mixed/01-optional-result.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/02-result-of-optional.graphql b/src/test/resources/compat/scenarios/optional-results-mixed/02-result-of-optional.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/02-result-of-optional.graphql rename to src/test/resources/compat/scenarios/optional-results-mixed/02-result-of-optional.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/schema.graphqls b/src/test/resources/compat/scenarios/optional-results-mixed/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-mixed/schema.graphqls rename to src/test/resources/compat/scenarios/optional-results-mixed/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-nested/01-optional-result-of-result.graphql b/src/test/resources/compat/scenarios/optional-results-nested/01-optional-result-of-result.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-nested/01-optional-result-of-result.graphql rename to src/test/resources/compat/scenarios/optional-results-nested/01-optional-result-of-result.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-nested/schema.graphqls b/src/test/resources/compat/scenarios/optional-results-nested/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results-nested/schema.graphqls rename to src/test/resources/compat/scenarios/optional-results-nested/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/01-optional-result.graphql b/src/test/resources/compat/scenarios/optional-results/01-optional-result.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/01-optional-result.graphql rename to src/test/resources/compat/scenarios/optional-results/01-optional-result.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/02-optional-result-name.graphql b/src/test/resources/compat/scenarios/optional-results/02-optional-result-name.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/02-optional-result-name.graphql rename to src/test/resources/compat/scenarios/optional-results/02-optional-result-name.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/03-empty-optional-result.graphql b/src/test/resources/compat/scenarios/optional-results/03-empty-optional-result.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/03-empty-optional-result.graphql rename to src/test/resources/compat/scenarios/optional-results/03-empty-optional-result.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/schema.graphqls b/src/test/resources/compat/scenarios/optional-results/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/optional-results/schema.graphqls rename to src/test/resources/compat/scenarios/optional-results/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/options/01-fields.graphql b/src/test/resources/compat/scenarios/options/01-fields.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/options/01-fields.graphql rename to src/test/resources/compat/scenarios/options/01-fields.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/options/02-schema-introspection.graphql b/src/test/resources/compat/scenarios/options/02-schema-introspection.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/options/02-schema-introspection.graphql rename to src/test/resources/compat/scenarios/options/02-schema-introspection.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/options/03-type-introspection.graphql b/src/test/resources/compat/scenarios/options/03-type-introspection.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/options/03-type-introspection.graphql rename to src/test/resources/compat/scenarios/options/03-type-introspection.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/options/schema.graphqls b/src/test/resources/compat/scenarios/options/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/options/schema.graphqls rename to src/test/resources/compat/scenarios/options/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/01-node.graphql b/src/test/resources/compat/scenarios/polymorphism/01-node.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/01-node.graphql rename to src/test/resources/compat/scenarios/polymorphism/01-node.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/02-union.graphql b/src/test/resources/compat/scenarios/polymorphism/02-union.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/02-union.graphql rename to src/test/resources/compat/scenarios/polymorphism/02-union.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/schema.graphqls b/src/test/resources/compat/scenarios/polymorphism/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/polymorphism/schema.graphqls rename to src/test/resources/compat/scenarios/polymorphism/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/01-interface.graphql b/src/test/resources/compat/scenarios/read-only-schema/01-interface.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/01-interface.graphql rename to src/test/resources/compat/scenarios/read-only-schema/01-interface.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/02-union.graphql b/src/test/resources/compat/scenarios/read-only-schema/02-union.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/02-union.graphql rename to src/test/resources/compat/scenarios/read-only-schema/02-union.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/03-no-mutation.graphql b/src/test/resources/compat/scenarios/read-only-schema/03-no-mutation.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/03-no-mutation.graphql rename to src/test/resources/compat/scenarios/read-only-schema/03-no-mutation.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/schema.graphqls b/src/test/resources/compat/scenarios/read-only-schema/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/read-only-schema/schema.graphqls rename to src/test/resources/compat/scenarios/read-only-schema/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/01-describe.graphql b/src/test/resources/compat/scenarios/recursive-inputs/01-describe.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/01-describe.graphql rename to src/test/resources/compat/scenarios/recursive-inputs/01-describe.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/01-describe.variables.json b/src/test/resources/compat/scenarios/recursive-inputs/01-describe.variables.json similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/01-describe.variables.json rename to src/test/resources/compat/scenarios/recursive-inputs/01-describe.variables.json diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/02-introspect.graphql b/src/test/resources/compat/scenarios/recursive-inputs/02-introspect.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/02-introspect.graphql rename to src/test/resources/compat/scenarios/recursive-inputs/02-introspect.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/schema.graphqls b/src/test/resources/compat/scenarios/recursive-inputs/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/recursive-inputs/schema.graphqls rename to src/test/resources/compat/scenarios/recursive-inputs/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/01-custom-scalar.graphql b/src/test/resources/compat/scenarios/scalar-args/01-custom-scalar.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/01-custom-scalar.graphql rename to src/test/resources/compat/scenarios/scalar-args/01-custom-scalar.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/02-id.graphql b/src/test/resources/compat/scenarios/scalar-args/02-id.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/02-id.graphql rename to src/test/resources/compat/scenarios/scalar-args/02-id.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/03-nested-sets.graphql b/src/test/resources/compat/scenarios/scalar-args/03-nested-sets.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/03-nested-sets.graphql rename to src/test/resources/compat/scenarios/scalar-args/03-nested-sets.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/04-nested-lists.graphql b/src/test/resources/compat/scenarios/scalar-args/04-nested-lists.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/04-nested-lists.graphql rename to src/test/resources/compat/scenarios/scalar-args/04-nested-lists.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/05-empty-kotlin-scalar.graphql b/src/test/resources/compat/scenarios/scalar-args/05-empty-kotlin-scalar.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/05-empty-kotlin-scalar.graphql rename to src/test/resources/compat/scenarios/scalar-args/05-empty-kotlin-scalar.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/06-marked-empty-kotlin-scalars.graphql b/src/test/resources/compat/scenarios/scalar-args/06-marked-empty-kotlin-scalars.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/06-marked-empty-kotlin-scalars.graphql rename to src/test/resources/compat/scenarios/scalar-args/06-marked-empty-kotlin-scalars.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/07-optional-marked-empty-kotlin-scalars.graphql b/src/test/resources/compat/scenarios/scalar-args/07-optional-marked-empty-kotlin-scalars.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/07-optional-marked-empty-kotlin-scalars.graphql rename to src/test/resources/compat/scenarios/scalar-args/07-optional-marked-empty-kotlin-scalars.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/schema.graphqls b/src/test/resources/compat/scenarios/scalar-args/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-args/schema.graphqls rename to src/test/resources/compat/scenarios/scalar-args/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/01-introspect-scalars.graphql b/src/test/resources/compat/scenarios/scalar-directives/01-introspect-scalars.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/01-introspect-scalars.graphql rename to src/test/resources/compat/scenarios/scalar-directives/01-introspect-scalars.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/02-use-scalars.graphql b/src/test/resources/compat/scenarios/scalar-directives/02-use-scalars.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/02-use-scalars.graphql rename to src/test/resources/compat/scenarios/scalar-directives/02-use-scalars.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/schema.graphqls b/src/test/resources/compat/scenarios/scalar-directives/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/scalar-directives/schema.graphqls rename to src/test/resources/compat/scenarios/scalar-directives/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-misbound/01-thumbnail.graphql b/src/test/resources/compat/scenarios/sourceless-misbound/01-thumbnail.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-misbound/01-thumbnail.graphql rename to src/test/resources/compat/scenarios/sourceless-misbound/01-thumbnail.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-misbound/schema.graphqls b/src/test/resources/compat/scenarios/sourceless-misbound/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-misbound/schema.graphqls rename to src/test/resources/compat/scenarios/sourceless-misbound/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-shadowed/01-shadowed.graphql b/src/test/resources/compat/scenarios/sourceless-shadowed/01-shadowed.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-shadowed/01-shadowed.graphql rename to src/test/resources/compat/scenarios/sourceless-shadowed/01-shadowed.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-shadowed/schema.graphqls b/src/test/resources/compat/scenarios/sourceless-shadowed/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-shadowed/schema.graphqls rename to src/test/resources/compat/scenarios/sourceless-shadowed/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-unimplemented/01-helper.graphql b/src/test/resources/compat/scenarios/sourceless-unimplemented/01-helper.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-unimplemented/01-helper.graphql rename to src/test/resources/compat/scenarios/sourceless-unimplemented/01-helper.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-unimplemented/schema.graphqls b/src/test/resources/compat/scenarios/sourceless-unimplemented/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless-unimplemented/schema.graphqls rename to src/test/resources/compat/scenarios/sourceless-unimplemented/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/01-local-context.graphql b/src/test/resources/compat/scenarios/sourceless/01-local-context.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/01-local-context.graphql rename to src/test/resources/compat/scenarios/sourceless/01-local-context.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/02-contexts.graphql b/src/test/resources/compat/scenarios/sourceless/02-contexts.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/02-contexts.graphql rename to src/test/resources/compat/scenarios/sourceless/02-contexts.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/schema.graphqls b/src/test/resources/compat/scenarios/sourceless/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/sourceless/schema.graphqls rename to src/test/resources/compat/scenarios/sourceless/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-input-order/01-count.graphql b/src/test/resources/compat/scenarios/type-extensions-input-order/01-count.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-input-order/01-count.graphql rename to src/test/resources/compat/scenarios/type-extensions-input-order/01-count.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-input-order/schema.graphqls b/src/test/resources/compat/scenarios/type-extensions-input-order/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-input-order/schema.graphqls rename to src/test/resources/compat/scenarios/type-extensions-input-order/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/01-kept-declarations.graphql b/src/test/resources/compat/scenarios/type-extensions-repeated-fields/01-kept-declarations.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/01-kept-declarations.graphql rename to src/test/resources/compat/scenarios/type-extensions-repeated-fields/01-kept-declarations.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/02-introspection.graphql b/src/test/resources/compat/scenarios/type-extensions-repeated-fields/02-introspection.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/02-introspection.graphql rename to src/test/resources/compat/scenarios/type-extensions-repeated-fields/02-introspection.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/schema.graphqls b/src/test/resources/compat/scenarios/type-extensions-repeated-fields/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-repeated-fields/schema.graphqls rename to src/test/resources/compat/scenarios/type-extensions-repeated-fields/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-sealed/01-pets-and-animals.graphql b/src/test/resources/compat/scenarios/type-extensions-sealed/01-pets-and-animals.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-sealed/01-pets-and-animals.graphql rename to src/test/resources/compat/scenarios/type-extensions-sealed/01-pets-and-animals.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-sealed/schema.graphqls b/src/test/resources/compat/scenarios/type-extensions-sealed/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions-sealed/schema.graphqls rename to src/test/resources/compat/scenarios/type-extensions-sealed/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/01-node.graphql b/src/test/resources/compat/scenarios/type-extensions/01-node.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/01-node.graphql rename to src/test/resources/compat/scenarios/type-extensions/01-node.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/02-search-and-enums.graphql b/src/test/resources/compat/scenarios/type-extensions/02-search-and-enums.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/02-search-and-enums.graphql rename to src/test/resources/compat/scenarios/type-extensions/02-search-and-enums.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/03-introspection.graphql b/src/test/resources/compat/scenarios/type-extensions/03-introspection.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/03-introspection.graphql rename to src/test/resources/compat/scenarios/type-extensions/03-introspection.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/schema.graphqls b/src/test/resources/compat/scenarios/type-extensions/schema.graphqls similarity index 86% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/schema.graphqls rename to src/test/resources/compat/scenarios/type-extensions/schema.graphqls index b0488c03..4773779c 100644 --- a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/type-extensions/schema.graphqls +++ b/src/test/resources/compat/scenarios/type-extensions/schema.graphqls @@ -16,8 +16,6 @@ interface Node @tag(name: "base") { } extend interface Node @tag(name: "extension") { - "The extension id" - id: ID! name: String } @@ -28,7 +26,7 @@ type Article implements Node @owner(team: "content") @tag(name: "base") { title: String } -extend type Article @owner(team: "growth") @tag(name: "extension") +extend type Article @tag(name: "extension") type Video { id: ID! @@ -41,7 +39,7 @@ extend type Video implements Node union SearchResult @tag(name: "base") = Article -extend union SearchResult @tag(name: "extension") = Video | Article +extend union SearchResult @tag(name: "extension") = Video enum Color @tag(name: "base") { "The first red" @@ -50,7 +48,6 @@ enum Color @tag(name: "base") { } extend enum Color @tag(name: "extension") { - RED GREEN } diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/01-ignored.graphql b/src/test/resources/compat/scenarios/unmapped-inputs/01-ignored.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/01-ignored.graphql rename to src/test/resources/compat/scenarios/unmapped-inputs/01-ignored.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/02-typo.graphql b/src/test/resources/compat/scenarios/unmapped-inputs/02-typo.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/02-typo.graphql rename to src/test/resources/compat/scenarios/unmapped-inputs/02-typo.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/schema.graphqls b/src/test/resources/compat/scenarios/unmapped-inputs/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/unmapped-inputs/schema.graphqls rename to src/test/resources/compat/scenarios/unmapped-inputs/schema.graphqls diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/01-trees.graphql b/src/test/resources/compat/scenarios/wiring-shapes/01-trees.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/01-trees.graphql rename to src/test/resources/compat/scenarios/wiring-shapes/01-trees.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/02-person.graphql b/src/test/resources/compat/scenarios/wiring-shapes/02-person.graphql similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/02-person.graphql rename to src/test/resources/compat/scenarios/wiring-shapes/02-person.graphql diff --git a/.claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/schema.graphqls b/src/test/resources/compat/scenarios/wiring-shapes/schema.graphqls similarity index 100% rename from .claude/skills/verify-tools/probe/src/main/resources/scenarios/wiring-shapes/schema.graphqls rename to src/test/resources/compat/scenarios/wiring-shapes/schema.graphqls From a8665e1e3a818a4df89cff9a4f06a4b724c7f305 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:34:06 -0500 Subject: [PATCH 02/12] Fail the build when a schema that built on the last release throws CompatTest builds every scenario, the scenario with its resolvers behind JDK proxies, and invalid SDL variants of it from the grammar: extensions of another kind, undeclared and misplaced directives, wrong argument values, and repeats. It fails when a case that built on the release in src/test/resources/compat throws now, unless accepted.txt lists it. When the pom's major is above the release's, a case may break only if the release logged a WARN for it. -Dcompat.capture records the results for the pom's version. --- .../kickstart/tools/compat/CompatTest.kt | 133 ++ .../kickstart/tools/compat/Variants.kt | 117 ++ src/test/resources/compat/15.0.0/accepted.txt | 0 src/test/resources/compat/15.0.0/cases.tsv | 1431 +++++++++++++++++ 4 files changed, 1681 insertions(+) create mode 100644 src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt create mode 100644 src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt create mode 100644 src/test/resources/compat/15.0.0/accepted.txt create mode 100644 src/test/resources/compat/15.0.0/cases.tsv diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt new file mode 100644 index 00000000..8db74386 --- /dev/null +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -0,0 +1,133 @@ +package graphql.kickstart.tools.compat + +import ch.qos.logback.classic.Level +import ch.qos.logback.classic.Logger +import ch.qos.logback.classic.spi.ILoggingEvent +import ch.qos.logback.core.read.ListAppender +import graphql.kickstart.tools.compat.scenarios.SCENARIOS +import graphql.kickstart.tools.compat.scenarios.Scenario +import org.junit.Assert.fail +import org.junit.Test +import org.slf4j.LoggerFactory +import java.io.File + +/** + * Builds every scenario and its invalid variants, and fails when a case that built on the last release throws now. + * `-Dcompat.capture` records this checkout's results as the capture for its pom version instead. + */ +class CompatTest { + @Test + fun `cases that built on the last release still build`() { + val outcomes = runAll() + val version = pomVersion() + if (System.getProperty("compat.capture") != null) { + val dir = File(CAPTURES, version.toString()).apply { mkdirs() } + write(File(dir, "cases.tsv"), outcomes) + File(dir, "accepted.txt").takeUnless { it.exists() }?.writeText("") + return + } + + val (release, dir) = CAPTURES.listFiles().orEmpty().mapNotNull { file -> parseVersion(file.name)?.let { it to file } } + .filter { it.first <= version }.maxByOrNull { it.first } + ?: return fail("No capture in $CAPTURES at or below $version. Capture the last release as AGENTS.md describes under Releases.") + val released = read(File(dir, "cases.tsv")) + val acceptedFile = File(dir, "accepted.txt") + val accepted = acceptedFile.readLines().filter { it.isNotBlank() }.map { Regex(it.substringBefore('\t')) } + val major = version.major > release.major + + fun repeatsSeedBreak(key: CaseKey) = + key != key.seed && released[key.seed]?.built == true && outcomes[key.seed]?.error == outcomes.getValue(key).error + fun warnedOnRelease(key: CaseKey) = + (released.getValue(key).warnings - if (key == key.seed) emptySet() else released[key.seed]?.warnings.orEmpty().toSet()).isNotEmpty() + + val broke = released.keys.filter { released.getValue(it).built && outcomes[it]?.built == false } + .filterNot(::repeatsSeedBreak) + .filterNot { key -> accepted.any { it.containsMatchIn(key.toString()) } } + .filterNot { major && warnedOnRelease(it) } + if (broke.isEmpty()) return + + val target = "${release.major + 1}.0.0" + val cases = broke.take(SHOWN).joinToString("\n") { " $it\n ${outcomes.getValue(it).error}" } + + if (broke.size > SHOWN) "\n and ${broke.size - SHOWN} more" else "" + val byOperator = broke.groupingBy { it.operator }.eachCount().toSortedMap() + fail( + if (major) { + """ + |${broke.size} cases built on $release with no WARN of their own and throw now $byOperator. + |A major may reject only input that the last minor warned about. Log a WARN that names the type and the item in a + |${release.major}.x release first. A deliberate break that the release notes list goes into $acceptedFile as a + |regex for the case, a tab, and the issue. + |$cases + """.trimMargin() + } else { + """ + |${broke.size} cases built on $release and throw now $byOperator. + |Invalid input that built on the last release keeps building until the next major (AGENTS.md, Compatibility). + |Instead of throwing, log a WARN that names the type and the item, open a GitHub issue with $target in its title, + |and leave `// TODO in $target (#N)`. A deliberate break that the release notes list goes into + |$acceptedFile as a regex for the case, a tab, and the issue. + |$cases + """.trimMargin() + } + ) + } +} + +class Outcome(val error: String?, val warnings: List) { + val built get() = error == null +} + +private val CAPTURES = File("src/test/resources/compat") +private const val SHOWN = 50 +private fun runAll(): Map { + // the tests run in the library's module, which neither reads logback's nor exports the scenarios to kotlin-reflect + val module = CompatTest::class.java.module + listOf("ch.qos.logback.classic", "ch.qos.logback.core").forEach { ModuleLayer.boot().findModule(it).ifPresent(module::addReads) } + ModuleLayer.boot().findModule("kotlin.reflect").ifPresent { module.addExports(Scenario::class.java.packageName, it) } + val logger = LoggerFactory.getLogger("graphql.kickstart.tools") as Logger + val appender = ListAppender().apply { start() } + logger.addAppender(appender) + logger.isAdditive = false + try { + return SCENARIOS.flatMap(::variants).associate { variant -> + appender.list.clear() + val error = try { + variant.build() + null + } catch (e: Throwable) { + "${e.javaClass.simpleName}: ${normalize(e.message.orEmpty().lineSequence().first())}" + } + val warnings = appender.list.filter { it.level.isGreaterOrEqual(Level.WARN) }.map { normalize(it.formattedMessage) }.sorted() + variant.key to Outcome(error, warnings) + } + } finally { + logger.isAdditive = true + logger.detachAppender(appender) + } +} + +private fun normalize(message: String) = message + .replace(Regex("\\s+"), " ") + .replace(Regex("jdk\\.proxy\\d+\\.\\\$Proxy\\d+"), "jdk.proxyN.\\\$ProxyN") + .replace(Regex("\\\$\\\$SpringCGLIB\\\$\\\$\\d+"), "\\\$\\\$SpringCGLIB\\\$\\\$N") + .replace(Regex("@[0-9a-f]{5,}"), "@HASH") + +private fun write(file: File, outcomes: Map) = file.writeText( + outcomes.entries.joinToString("") { (key, outcome) -> + (listOf(key.scenario, key.operator, key.snippet, outcome.error ?: "BUILT") + outcome.warnings).joinToString("\t") + "\n" + } +) + +private fun read(file: File): Map = file.readLines().filter { it.isNotEmpty() }.associate { line -> + val cells = line.split('\t') + CaseKey(cells[0], cells[1], cells[2]) to Outcome(cells[3].takeUnless { it == "BUILT" }, cells.drop(4)) +} + +private fun pomVersion(): KotlinVersion { + val pom = File("pom.xml").readText() + val version = Regex("graphql-java-tools\\s*([^<]+)").find(pom)!!.groupValues[1] + return parseVersion(version.substringBefore('-'))!! +} + +private fun parseVersion(text: String): KotlinVersion? = + Regex("(\\d+)\\.(\\d+)\\.(\\d+)").matchEntire(text)?.destructured?.let { (major, minor, patch) -> KotlinVersion(major.toInt(), minor.toInt(), patch.toInt()) } diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt new file mode 100644 index 00000000..8f9c795f --- /dev/null +++ b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt @@ -0,0 +1,117 @@ +package graphql.kickstart.tools.compat + +import graphql.kickstart.tools.GraphQLResolver +import graphql.kickstart.tools.compat.scenarios.Scenario +import graphql.kickstart.tools.compat.scenarios.parser +import graphql.language.AstPrinter +import graphql.language.DirectiveDefinition +import graphql.language.EnumTypeDefinition +import graphql.language.InputObjectTypeDefinition +import graphql.language.InterfaceTypeDefinition +import graphql.language.ListType +import graphql.language.NonNullType +import graphql.language.ObjectTypeDefinition +import graphql.language.ScalarTypeDefinition +import graphql.language.Type +import graphql.language.TypeDefinition +import graphql.language.TypeName +import graphql.language.UnionTypeDefinition +import graphql.parser.Parser +import org.springframework.aop.framework.ProxyFactory + +data class CaseKey(val scenario: String, val operator: String, val snippet: String) { + val seed get() = CaseKey(scenario, "seed", "") + + override fun toString() = listOf(scenario, operator, snippet).filter { it.isNotEmpty() }.joinToString(" | ") +} + +class Variant(val key: CaseKey, val build: () -> Unit) + +/** + * The scenario as it is, plus one invalid SDL snippet per grammar rule it can break, plus every resolver behind a JDK proxy. + * The rules come from the SDL grammar, not from known bugs, so a new rejection of any of them shows up. + */ +fun variants(scenario: Scenario): List { + fun variant(operator: String, snippet: String = "", resolvers: () -> List> = { scenario.resolvers }) = + Variant(CaseKey(scenario.name, operator, snippet)) { + val builder = scenario.parser(resolvers()) + if (snippet.isNotEmpty()) builder.schemaString(snippet) + scenario.schema(builder.build()) + } + + return listOf(variant("seed"), variant("proxy") { scenario.resolvers.map { ProxyFactory(it).proxy as GraphQLResolver<*> } }) + + snippets(scenario).map { (operator, snippet) -> variant(operator, snippet) } +} + +private val KINDS: Map, String> = mapOf( + ObjectTypeDefinition::class.java to "type", + InterfaceTypeDefinition::class.java to "interface", + InputObjectTypeDefinition::class.java to "input", + EnumTypeDefinition::class.java to "enum", + UnionTypeDefinition::class.java to "union", + ScalarTypeDefinition::class.java to "scalar" +) + +private val LOCATIONS = mapOf("type" to "OBJECT", "interface" to "INTERFACE", "input" to "INPUT_OBJECT", "enum" to "ENUM", "union" to "UNION", "scalar" to "SCALAR") + +private val SPECIFIED_BY = Parser().parseDocument("directive @specifiedBy(url: String!) on SCALAR").definitions.single() as DirectiveDefinition + +private fun snippets(scenario: Scenario): Set> { + val sdl = scenario.files.joinToString("\n") { Scenario::class.java.classLoader.getResource(it)!!.readText() } + val definitions = Parser().parseDocument(sdl).definitions + val types = definitions.filterIsInstance>().filter { it.javaClass in KINDS } + val directives = definitions.filterIsInstance() + SPECIFIED_BY + val objectNames = types.filterIsInstance().map { it.name } - setOf("Query", "Mutation", "Subscription") + val snippets = LinkedHashSet>() + + for (type in types) { + val kind = KINDS.getValue(type.javaClass) + for (other in KINDS.values - kind) { + when (other) { + "enum" -> "extend enum ${type.name} { COMPAT_Z }" + "union" -> objectNames.firstOrNull { it != type.name }?.let { "extend union ${type.name} = $it" } + "scalar" -> "extend scalar ${type.name} @specifiedBy(url: \"https://example.com\")" + else -> "extend $other ${type.name} { compatZ: String }" + }?.let { snippets += "kind" to it } + } + snippets += "undeclared" to "extend $kind ${type.name} @compatUndeclared" + firstMember(type)?.let { snippets += "repeat" to "extend $kind ${type.name} $it" } + for (directive in directives) { + if (LOCATIONS.getValue(kind) !in directive.directiveLocations.map { it.name }) { + snippets += "location" to "extend $kind ${type.name} @${directive.name}" + continue + } + for (argument in directive.inputValueDefinitions) { + for (literal in wrongLiterals(argument.type)) { + snippets += "argval" to "extend $kind ${type.name} @${directive.name}(${argument.name}: $literal)" + } + } + if (!directive.isRepeatable && directive.inputValueDefinitions.none { it.type is NonNullType && it.defaultValue == null }) { + snippets += "repeat-directive" to "extend $kind ${type.name} @${directive.name} @${directive.name}" + } + } + } + return snippets +} + +private fun firstMember(type: TypeDefinition<*>): String? = when (type) { + is EnumTypeDefinition -> type.enumValueDefinitions.firstOrNull()?.let { "{ ${it.name} }" } + is UnionTypeDefinition -> type.memberTypes.firstOrNull()?.let { "= ${(it as TypeName).name}" } + is ObjectTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } + is InterfaceTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } + is InputObjectTypeDefinition -> type.inputValueDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } + else -> null +} + +private fun String.oneLine() = replace(Regex("\\s+"), " ").trim() + +private fun wrongLiterals(type: Type<*>): List { + val inner = if (type is NonNullType) type.type else type + val literals = when (if (inner is ListType) "list" else (inner as TypeName).name) { + "String", "ID" -> listOf("5", "NOPE") + "Int", "Float", "Boolean" -> listOf("\"x\"") + "list" -> listOf("{ a: 1 }") + else -> listOf("5", "\"x\"") + } + return if (type is NonNullType) literals + "null" else literals +} diff --git a/src/test/resources/compat/15.0.0/accepted.txt b/src/test/resources/compat/15.0.0/accepted.txt new file mode 100644 index 00000000..e69de29b diff --git a/src/test/resources/compat/15.0.0/cases.tsv b/src/test/resources/compat/15.0.0/cases.tsv new file mode 100644 index 00000000..30ed641e --- /dev/null +++ b/src/test/resources/compat/15.0.0/cases.tsv @@ -0,0 +1,1431 @@ +async seed BUILT +async proxy FieldResolverError: Field 'Query.future' resolves to graphql.kickstart.tools.compat.scenarios.AsyncQuery.future, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncQuery, so every query of the field will fail. +async kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +async kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +async kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +async kind extend union Query = Shipment BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +async kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +async undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +async repeat extend type Query { future: String! } SchemaError: Type 'Query' declares field 'future' more than once at line 1, column 21. +async location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +async kind extend interface Shipment { compatZ: String } BUILT Type 'Shipment' is defined as an object type, but extended as an interface. The extension is ignored. +async kind extend input Shipment { compatZ: String } BUILT Type 'Shipment' is defined as an object type, but extended as an input object type. The extension is ignored. +async kind extend enum Shipment { COMPAT_Z } BUILT Type 'Shipment' is defined as an object type, but extended as an enum. The extension is ignored. +async kind extend scalar Shipment @specifiedBy(url: "https://example.com") BUILT Type 'Shipment' is defined as an object type, but extended as a scalar. The extension is ignored. +async undeclared extend type Shipment @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +async repeat extend type Shipment { id: ID! } SchemaError: Type 'Shipment' declares field 'id' more than once at line 1, column 24. +async location extend type Shipment @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +async kind extend interface Subscription { compatZ: String } BUILT Type 'Subscription' is defined as an object type, but extended as an interface. The extension is ignored. +async kind extend input Subscription { compatZ: String } BUILT Type 'Subscription' is defined as an object type, but extended as an input object type. The extension is ignored. +async kind extend enum Subscription { COMPAT_Z } BUILT Type 'Subscription' is defined as an object type, but extended as an enum. The extension is ignored. +async kind extend union Subscription = Shipment BUILT Type 'Subscription' is defined as an object type, but extended as a union. The extension is ignored. +async kind extend scalar Subscription @specifiedBy(url: "https://example.com") BUILT Type 'Subscription' is defined as an object type, but extended as a scalar. The extension is ignored. +async undeclared extend type Subscription @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +async repeat extend type Subscription { ticks(count: Int!): Int! } SchemaError: Type 'Subscription' declares field 'ticks' more than once at line 1, column 28. +async location extend type Subscription @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to OBJECT, but it's declared on SCALAR. +bookstore seed BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore proxy FieldResolverError: Field 'Query.books' resolves to graphql.kickstart.tools.compat.scenarios.BookstoreQuery.books, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.BookstoreQuery, so every query of the field will fail. +bookstore kind extend type Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +bookstore kind extend interface Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +bookstore kind extend input Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +bookstore kind extend enum Date { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +bookstore kind extend union Date = Book BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. +bookstore undeclared extend scalar Date @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore kind extend interface Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore kind extend input Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore kind extend enum Query { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore kind extend union Query = Book BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +bookstore kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore repeat extend type Query { books: [Book!]! } SchemaError: Type 'Query' declares field 'books' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore kind extend interface Book { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore kind extend input Book { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore kind extend enum Book { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore kind extend union Book = Author BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as a union. The extension is ignored. +bookstore kind extend scalar Book @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore undeclared extend type Book @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore repeat extend type Book { id: ID! } SchemaError: Type 'Book' declares field 'id' more than once at line 1, column 20. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore kind extend interface Author { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore kind extend input Author { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore kind extend enum Author { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore kind extend union Author = Book BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as a union. The extension is ignored. +bookstore kind extend scalar Author @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore undeclared extend type Author @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore repeat extend type Author { id: ID! } SchemaError: Type 'Author' declares field 'id' more than once at line 1, column 22. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Author @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore kind extend interface Review { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore kind extend input Review { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore kind extend enum Review { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore kind extend union Review = Book BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as a union. The extension is ignored. +bookstore kind extend scalar Review @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore undeclared extend type Review @compatUndeclared BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore repeat extend type Review { stars: Int! } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Review @specifiedBy BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore-missing-resolver seed FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver kind extend type Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +bookstore-missing-resolver kind extend interface Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Date { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Date = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. +bookstore-missing-resolver undeclared extend scalar Date @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: 5) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: NOPE) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: null) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver kind extend interface Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Query { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Query = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Query @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver repeat extend type Query { books: [Book!]! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver location extend type Query @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver kind extend interface Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Book { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Book = Author FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Book @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Book @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver repeat extend type Book { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver location extend type Book @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver kind extend interface Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Author { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Author = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Author @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Author @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver repeat extend type Author { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver location extend type Author @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver kind extend interface Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Review { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Review = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Review @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Review @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver repeat extend type Review { stars: Int! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver location extend type Review @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +context-and-environment seed BUILT +context-and-environment proxy FieldResolverError: Field 'Query.greeting' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.greeting, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. +context-and-environment kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +context-and-environment kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +context-and-environment kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +context-and-environment kind extend union Query = User BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +context-and-environment kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +context-and-environment undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +context-and-environment repeat extend type Query { greeting(name: String!): String! } SchemaError: Type 'Query' declares field 'greeting' more than once at line 1, column 21. +context-and-environment location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +context-and-environment kind extend interface User { compatZ: String } BUILT Type 'User' is defined as an object type, but extended as an interface. The extension is ignored. +context-and-environment kind extend input User { compatZ: String } BUILT Type 'User' is defined as an object type, but extended as an input object type. The extension is ignored. +context-and-environment kind extend enum User { COMPAT_Z } BUILT Type 'User' is defined as an object type, but extended as an enum. The extension is ignored. +context-and-environment kind extend scalar User @specifiedBy(url: "https://example.com") BUILT Type 'User' is defined as an object type, but extended as a scalar. The extension is ignored. +context-and-environment undeclared extend type User @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +context-and-environment repeat extend type User { name: String! } SchemaError: Type 'User' declares field 'name' more than once at line 1, column 20. +context-and-environment location extend type User @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +context-and-environment-invalid seed FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-and-environment-invalid proxy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-and-environment-invalid kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +context-and-environment-invalid kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +context-and-environment-invalid kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +context-and-environment-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +context-and-environment-invalid undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-and-environment-invalid repeat extend type Query { greeting(name: String!): String! } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-and-environment-invalid location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-misbound seed FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound proxy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound kind extend interface Query { compatZ: String } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +context-misbound kind extend input Query { compatZ: String } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +context-misbound kind extend enum Query { COMPAT_Z } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +context-misbound kind extend union Query = User FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +context-misbound kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +context-misbound undeclared extend type Query @compatUndeclared FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound repeat extend type Query { users(first: Int): [User!]! } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound location extend type Query @specifiedBy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound kind extend interface User { compatZ: String } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'User' is defined as an object type, but extended as an interface. The extension is ignored. +context-misbound kind extend input User { compatZ: String } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'User' is defined as an object type, but extended as an input object type. The extension is ignored. +context-misbound kind extend enum User { COMPAT_Z } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'User' is defined as an object type, but extended as an enum. The extension is ignored. +context-misbound kind extend scalar User @specifiedBy(url: "https://example.com") FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'User' is defined as an object type, but extended as a scalar. The extension is ignored. +context-misbound undeclared extend type User @compatUndeclared FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound repeat extend type User { name: String! } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +context-misbound location extend type User @specifiedBy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. +directive-drift seed SchemaError: Found an unexpected directive argument tag#nam . +directive-drift proxy FieldResolverError: Field 'Query.plain' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.plain, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. +directive-drift kind extend type Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an interface. The extension is ignored. +directive-drift kind extend input Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an input object type. The extension is ignored. +directive-drift kind extend union Kind = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Kind @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend enum Kind @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend enum Kind { PLAIN } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Kind @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend enum Kind @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Kind @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Kind @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Kind @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Kind @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Kind @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend interface Query { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directive-drift kind extend input Query { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Query { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directive-drift kind extend union Query = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend type Query @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend type Query { plain: String @tag(name: "plain", level: 2) @once(reason: "supplied") @fieldOnly @argDoc(note: "x") } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Query @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend type Query @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Query @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Query @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Query @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Query @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Query @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Animal { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. +directive-drift kind extend input Animal { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Animal { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. +directive-drift kind extend union Animal = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Animal @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend interface Animal @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend interface Animal { name: String @once @once } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend interface Animal @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend interface Animal @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend interface Animal @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend interface Animal @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend interface Animal @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend interface Animal @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend interface Animal @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend interface Dog { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. +directive-drift kind extend input Dog { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Dog { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. +directive-drift kind extend scalar Dog @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend type Dog @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend type Dog { name: String } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend type Dog @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend type Dog @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Dog @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Dog @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Dog @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Dog @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend type Dog @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. +directive-drift kind extend input Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Pet { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an enum. The extension is ignored. +directive-drift kind extend scalar Pet @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend union Pet @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend union Pet = Dog SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend union Pet @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend union Pet @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend union Pet @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend union Pet @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend union Pet @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend union Pet @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend union Pet @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. +directive-drift kind extend input Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. +directive-drift kind extend union Color = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Color @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend enum Color @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend enum Color { RED } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend enum Color @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend enum Color @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Color @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Color @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Color @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Color @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend enum Color @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Meta { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Meta { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an interface. The extension is ignored. +directive-drift kind extend enum Meta { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an enum. The extension is ignored. +directive-drift kind extend union Meta = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Meta @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend input Meta @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat extend input Meta { owner: String @once(reason: "x") @once } SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend input Meta @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend input Meta @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend input Meta @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend input Meta @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend input Meta @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend input Meta @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend input Meta @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +directive-drift kind extend input Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Date { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +directive-drift kind extend union Date = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. +directive-drift undeclared extend scalar Date @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend scalar Date @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Date @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Date @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Date @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Date @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @specifiedBy(url: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Date @specifiedBy(url: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. +directive-drift kind extend input Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Money { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. +directive-drift kind extend union Money = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as a union. The extension is ignored. +directive-drift undeclared extend scalar Money @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift repeat-directive extend scalar Money @once @once SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Money @link SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Money @argDoc SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Money @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . +directive-drift location extend scalar Money @needs SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @specifiedBy(url: 5) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @specifiedBy(url: NOPE) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift argval extend scalar Money @specifiedBy(url: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift-undeclared seed SchemaError: Found applied directive undeclared without corresponding directive definition. +directive-drift-undeclared proxy FieldResolverError: Field 'Query.a' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField.a, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField, so every query of the field will fail. +directive-drift-undeclared kind extend interface Query { compatZ: String } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directive-drift-undeclared kind extend input Query { compatZ: String } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directive-drift-undeclared kind extend enum Query { COMPAT_Z } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directive-drift-undeclared kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directive-drift-undeclared undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +directive-drift-undeclared repeat extend type Query { a: String @undeclared(s: "x") } SchemaError: Type 'Query' declares field 'a' more than once at line 1, column 21. +directive-drift-undeclared location extend type Query @specifiedBy SchemaError: Found applied directive undeclared without corresponding directive definition. +directives seed BUILT +directives proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesQuery, so every query of the field will fail. +directives kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directives kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directives kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directives kind extend union Query = Member BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +directives kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +directives repeat extend type Query { motto: String! @uppercase } SchemaError: Type 'Query' declares field 'motto' more than once at line 1, column 21. +directives location extend type Query @uppercase SchemaError: Directive @uppercase at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directives location extend type Query @connection SchemaError: Directive @connection at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +directives kind extend interface Member { compatZ: String } BUILT Type 'Member' is defined as an object type, but extended as an interface. The extension is ignored. +directives kind extend input Member { compatZ: String } BUILT Type 'Member' is defined as an object type, but extended as an input object type. The extension is ignored. +directives kind extend enum Member { COMPAT_Z } BUILT Type 'Member' is defined as an object type, but extended as an enum. The extension is ignored. +directives kind extend scalar Member @specifiedBy(url: "https://example.com") BUILT Type 'Member' is defined as an object type, but extended as a scalar. The extension is ignored. +directives undeclared extend type Member @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +directives repeat extend type Member { id: ID! } SchemaError: Type 'Member' declares field 'id' more than once at line 1, column 22. +directives location extend type Member @uppercase SchemaError: Directive @uppercase at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directives location extend type Member @connection SchemaError: Directive @connection at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directives location extend type Member @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +directives-invalid seed SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery, so every query of the field will fail. +directives-invalid kind extend interface Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directives-invalid kind extend input Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directives-invalid kind extend enum Query { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directives-invalid kind extend union Query = Member SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +directives-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directives-invalid undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +directives-invalid repeat extend type Query { motto: String! @uppercase } SchemaError: Type 'Query' declares field 'motto' more than once at line 1, column 21. +directives-invalid repeat-directive extend type Query @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Query @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Query @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Query @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid kind extend interface Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an interface. The extension is ignored. +directives-invalid kind extend input Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an input object type. The extension is ignored. +directives-invalid kind extend enum Member { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an enum. The extension is ignored. +directives-invalid kind extend scalar Member @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as a scalar. The extension is ignored. +directives-invalid undeclared extend type Member @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +directives-invalid repeat extend type Member { id: ID! } SchemaError: Type 'Member' declares field 'id' more than once at line 1, column 22. +directives-invalid repeat-directive extend type Member @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Member @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Member @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid location extend type Member @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +generic-input-resolver seed BUILT +generic-input-resolver proxy FieldResolverError: Field 'Query.generic' resolves to graphql.kickstart.tools.compat.scenarios.InputResolver.generic, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputResolver, so every query of the field will fail. +generic-input-resolver kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +generic-input-resolver kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +generic-input-resolver kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +generic-input-resolver kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +generic-input-resolver undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +generic-input-resolver repeat extend type Query { generic(input: GreetingInput!): String! } SchemaError: Type 'Query' declares field 'generic' more than once at line 1, column 21. +generic-input-resolver location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +generic-input-resolver kind extend type GreetingInput { compatZ: String } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an object type. The extension is ignored. +generic-input-resolver kind extend interface GreetingInput { compatZ: String } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an interface. The extension is ignored. +generic-input-resolver kind extend enum GreetingInput { COMPAT_Z } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an enum. The extension is ignored. +generic-input-resolver kind extend scalar GreetingInput @specifiedBy(url: "https://example.com") BUILT Type 'GreetingInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +generic-input-resolver undeclared extend input GreetingInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +generic-input-resolver repeat extend input GreetingInput { name: String! } SchemaError: Type 'GreetingInput' declares field 'name' more than once at line 1, column 30. +generic-input-resolver location extend input GreetingInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 28 is applied to INPUT_OBJECT, but it's declared on SCALAR. +inputs seed BUILT +inputs proxy FieldResolverError: Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.InputsQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputsQuery, so every query of the field will fail. +inputs kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +inputs kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +inputs kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +inputs kind extend union Query = SavedBook BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend type Query { search(term: String!, limit: Int = 10, genres: [Genre!]): String! } SchemaError: Type 'Query' declares field 'search' more than once at line 1, column 21. +inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +inputs kind extend interface Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an interface. The extension is ignored. +inputs kind extend input Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an input object type. The extension is ignored. +inputs kind extend enum Mutation { COMPAT_Z } BUILT Type 'Mutation' is defined as an object type, but extended as an enum. The extension is ignored. +inputs kind extend union Mutation = SavedBook BUILT Type 'Mutation' is defined as an object type, but extended as a union. The extension is ignored. +inputs kind extend scalar Mutation @specifiedBy(url: "https://example.com") BUILT Type 'Mutation' is defined as an object type, but extended as a scalar. The extension is ignored. +inputs undeclared extend type Mutation @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend type Mutation { addBook(input: BookInput!): SavedBook! } SchemaError: Type 'Mutation' declares field 'addBook' more than once at line 1, column 24. +inputs location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +inputs kind extend type Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an object type. The extension is ignored. +inputs kind extend interface Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an interface. The extension is ignored. +inputs kind extend input Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an input object type. The extension is ignored. +inputs kind extend union Genre = SavedBook BUILT Type 'Genre' is defined as an enum, but extended as a union. The extension is ignored. +inputs kind extend scalar Genre @specifiedBy(url: "https://example.com") BUILT Type 'Genre' is defined as an enum, but extended as a scalar. The extension is ignored. +inputs undeclared extend enum Genre @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend enum Genre { FICTION } SchemaError: Type 'Genre' declares value 'FICTION' more than once at line 1, column 21. +inputs location extend enum Genre @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. +inputs kind extend type BookInput { compatZ: String } BUILT Type 'BookInput' is defined as an input object type, but extended as an object type. The extension is ignored. +inputs kind extend interface BookInput { compatZ: String } BUILT Type 'BookInput' is defined as an input object type, but extended as an interface. The extension is ignored. +inputs kind extend enum BookInput { COMPAT_Z } BUILT Type 'BookInput' is defined as an input object type, but extended as an enum. The extension is ignored. +inputs kind extend union BookInput = SavedBook BUILT Type 'BookInput' is defined as an input object type, but extended as a union. The extension is ignored. +inputs kind extend scalar BookInput @specifiedBy(url: "https://example.com") BUILT Type 'BookInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +inputs undeclared extend input BookInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend input BookInput { title: String! } SchemaError: Type 'BookInput' declares field 'title' more than once at line 1, column 26. +inputs location extend input BookInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +inputs kind extend type DetailsInput { compatZ: String } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an object type. The extension is ignored. +inputs kind extend interface DetailsInput { compatZ: String } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an interface. The extension is ignored. +inputs kind extend enum DetailsInput { COMPAT_Z } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an enum. The extension is ignored. +inputs kind extend union DetailsInput = SavedBook BUILT Type 'DetailsInput' is defined as an input object type, but extended as a union. The extension is ignored. +inputs kind extend scalar DetailsInput @specifiedBy(url: "https://example.com") BUILT Type 'DetailsInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +inputs undeclared extend input DetailsInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend input DetailsInput { pages: Int! } SchemaError: Type 'DetailsInput' declares field 'pages' more than once at line 1, column 29. +inputs location extend input DetailsInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. +inputs kind extend interface SavedBook { compatZ: String } BUILT Type 'SavedBook' is defined as an object type, but extended as an interface. The extension is ignored. +inputs kind extend input SavedBook { compatZ: String } BUILT Type 'SavedBook' is defined as an object type, but extended as an input object type. The extension is ignored. +inputs kind extend enum SavedBook { COMPAT_Z } BUILT Type 'SavedBook' is defined as an object type, but extended as an enum. The extension is ignored. +inputs kind extend scalar SavedBook @specifiedBy(url: "https://example.com") BUILT Type 'SavedBook' is defined as an object type, but extended as a scalar. The extension is ignored. +inputs undeclared extend type SavedBook @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +inputs repeat extend type SavedBook { title: String! } SchemaError: Type 'SavedBook' declares field 'title' more than once at line 1, column 25. +inputs location extend type SavedBook @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to OBJECT, but it's declared on SCALAR. +jdk-proxy seed FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/jdk-proxy/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +jdk-proxy kind extend interface Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +jdk-proxy kind extend input Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +jdk-proxy kind extend enum Query { COMPAT_Z } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +jdk-proxy kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +jdk-proxy undeclared extend type Query @compatUndeclared FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy repeat extend type Query { test: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy location extend type Query @specifiedBy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy-cglib seed AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib proxy AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib kind extend interface Query { compatZ: String } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib kind extend input Query { compatZ: String } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib kind extend enum Query { COMPAT_Z } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib kind extend scalar Query @specifiedBy(url: "https://example.com") AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib undeclared extend type Query @compatUndeclared AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib repeat extend type Query { test: String } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-cglib location extend type Query @specifiedBy AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class +jdk-proxy-plain seed BUILT +jdk-proxy-plain proxy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy-plain kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +jdk-proxy-plain kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +jdk-proxy-plain kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +jdk-proxy-plain kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +jdk-proxy-plain undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +jdk-proxy-plain repeat extend type Query { test: String } SchemaError: Type 'Query' declares field 'test' more than once at line 1, column 21. +jdk-proxy-plain location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-unions seed BUILT +nested-unions proxy FieldResolverError: Field 'Query.results' resolves to graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery.results, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery, so every query of the field will fail. +nested-unions kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +nested-unions kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-unions kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +nested-unions kind extend union Query = Book BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +nested-unions kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-unions undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-unions repeat extend type Query { results: [Result!]! } SchemaError: Type 'Query' declares field 'results' more than once at line 1, column 21. +nested-unions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-unions kind extend type Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an object type. The extension is ignored. +nested-unions kind extend interface Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an interface. The extension is ignored. +nested-unions kind extend input Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an input object type. The extension is ignored. +nested-unions kind extend enum Result { COMPAT_Z } BUILT Type 'Result' is defined as a union, but extended as an enum. The extension is ignored. +nested-unions kind extend scalar Result @specifiedBy(url: "https://example.com") BUILT Type 'Result' is defined as a union, but extended as a scalar. The extension is ignored. +nested-unions undeclared extend union Result @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-unions repeat extend union Result = Book SchemaError: Type 'Result' declares member 'Book' more than once at line 1, column 23. +nested-unions location extend union Result @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to UNION, but it's declared on SCALAR. +nested-unions kind extend type Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an object type. The extension is ignored. +nested-unions kind extend interface Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an interface. The extension is ignored. +nested-unions kind extend input Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an input object type. The extension is ignored. +nested-unions kind extend enum Media { COMPAT_Z } BUILT Type 'Media' is defined as a union, but extended as an enum. The extension is ignored. +nested-unions kind extend scalar Media @specifiedBy(url: "https://example.com") BUILT Type 'Media' is defined as a union, but extended as a scalar. The extension is ignored. +nested-unions undeclared extend union Media @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-unions repeat extend union Media = Movie SchemaError: Type 'Media' declares member 'Movie' more than once at line 1, column 22. +nested-unions location extend union Media @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to UNION, but it's declared on SCALAR. +nested-unions kind extend interface Book { compatZ: String } BUILT Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. +nested-unions kind extend input Book { compatZ: String } BUILT Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-unions kind extend enum Book { COMPAT_Z } BUILT Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. +nested-unions kind extend union Book = Movie BUILT Type 'Book' is defined as an object type, but extended as a union. The extension is ignored. +nested-unions kind extend scalar Book @specifiedBy(url: "https://example.com") BUILT Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-unions undeclared extend type Book @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-unions repeat extend type Book { title: String! } SchemaError: Type 'Book' declares field 'title' more than once at line 1, column 20. +nested-unions location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-unions kind extend interface Movie { compatZ: String } BUILT Type 'Movie' is defined as an object type, but extended as an interface. The extension is ignored. +nested-unions kind extend input Movie { compatZ: String } BUILT Type 'Movie' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-unions kind extend enum Movie { COMPAT_Z } BUILT Type 'Movie' is defined as an object type, but extended as an enum. The extension is ignored. +nested-unions kind extend union Movie = Book BUILT Type 'Movie' is defined as an object type, but extended as a union. The extension is ignored. +nested-unions kind extend scalar Movie @specifiedBy(url: "https://example.com") BUILT Type 'Movie' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-unions undeclared extend type Movie @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-unions repeat extend type Movie { title: String! } SchemaError: Type 'Movie' declares field 'title' more than once at line 1, column 21. +nested-unions location extend type Movie @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers seed BUILT +nested-wrappers proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. +nested-wrappers kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers kind extend union Query = Payload BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers repeat extend type Query { payload: Payload! } SchemaError: Type 'Query' declares field 'payload' more than once at line 1, column 21. +nested-wrappers location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers kind extend union Payload = Item BUILT Type 'Payload' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers repeat extend type Payload { data: String! } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. +nested-wrappers location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers kind extend union Item = Payload BUILT Type 'Item' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. +nested-wrappers location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-exact seed BUILT +nested-wrappers-exact proxy FieldResolverError: Field 'Query.dates' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.dates, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. +nested-wrappers-exact kind extend type DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an object type. The extension is ignored. +nested-wrappers-exact kind extend interface DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an interface. The extension is ignored. +nested-wrappers-exact kind extend input DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. +nested-wrappers-exact kind extend enum DateTime { COMPAT_Z } BUILT Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. +nested-wrappers-exact kind extend union DateTime = Item BUILT Type 'DateTime' is defined as a scalar, but extended as a union. The extension is ignored. +nested-wrappers-exact undeclared extend scalar DateTime @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: +nested-wrappers-exact kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-exact kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-exact kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-exact kind extend union Query = Item BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers-exact kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-exact undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-exact repeat extend type Query { dates: [DateTime] } SchemaError: Type 'Query' declares field 'dates' more than once at line 1, column 21. +nested-wrappers-exact location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-exact kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-exact kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-exact kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-exact kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-exact undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-exact repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. +nested-wrappers-exact location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-suspend seed BUILT +nested-wrappers-suspend proxy FieldResolverError: Field 'Query.nullableItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery.nullableItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery, so every query of the field will fail. +nested-wrappers-suspend kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-suspend kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-suspend kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-suspend kind extend union Query = Item BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers-suspend kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-suspend undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-suspend repeat extend type Query { nullableItems: [Item] } SchemaError: Type 'Query' declares field 'nullableItems' more than once at line 1, column 21. +nested-wrappers-suspend location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-suspend kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-suspend kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-suspend kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-suspend kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-suspend undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-suspend repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. +nested-wrappers-suspend location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer seed BUILT +nested-wrappers-unboxer proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. +nested-wrappers-unboxer kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-unboxer kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-unboxer kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-unboxer kind extend union Query = Payload BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers-unboxer kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-unboxer undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-unboxer repeat extend type Query { payload: Payload! } SchemaError: Type 'Query' declares field 'payload' more than once at line 1, column 21. +nested-wrappers-unboxer location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-unboxer kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-unboxer kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-unboxer kind extend union Payload = Item BUILT Type 'Payload' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers-unboxer kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-unboxer undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-unboxer repeat extend type Payload { data: String! } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. +nested-wrappers-unboxer location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. +nested-wrappers-unboxer kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. +nested-wrappers-unboxer kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. +nested-wrappers-unboxer kind extend union Item = Payload BUILT Type 'Item' is defined as an object type, but extended as a union. The extension is ignored. +nested-wrappers-unboxer kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. +nested-wrappers-unboxer undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +nested-wrappers-unboxer repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. +nested-wrappers-unboxer location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +optional-results seed BUILT +optional-results proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery, so every query of the field will fail. +optional-results kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results kind extend union Query = Payload BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +optional-results kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results repeat extend type Query { optionalResult: Payload } SchemaError: Type 'Query' declares field 'optionalResult' more than once at line 1, column 21. +optional-results location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. +optional-results location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results-list seed BUILT +optional-results-list proxy FieldResolverError: Field 'Query.optionalResultList' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery.optionalResultList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery, so every query of the field will fail. +optional-results-list kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-list kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-list kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-list kind extend union Query = Payload BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +optional-results-list kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-list undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results-list repeat extend type Query { optionalResultList: [Payload] } SchemaError: Type 'Query' declares field 'optionalResultList' more than once at line 1, column 21. +optional-results-list location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results-list kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-list kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-list kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-list kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-list undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results-list repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. +optional-results-list location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results-mixed seed BUILT +optional-results-mixed proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery, so every query of the field will fail. +optional-results-mixed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-mixed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-mixed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-mixed kind extend union Query = Payload BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +optional-results-mixed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-mixed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results-mixed repeat extend type Query { optionalResult: Payload } SchemaError: Type 'Query' declares field 'optionalResult' more than once at line 1, column 21. +optional-results-mixed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results-mixed kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-mixed kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-mixed kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-mixed kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-mixed undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +optional-results-mixed repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. +optional-results-mixed location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results-nested seed SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested proxy SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested kind extend interface Query { compatZ: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-nested kind extend input Query { compatZ: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-nested kind extend enum Query { COMPAT_Z } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-nested kind extend union Query = Payload SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +optional-results-nested kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-nested undeclared extend type Query @compatUndeclared SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested repeat extend type Query { optionalResultOfResult: Payload } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested location extend type Query @specifiedBy SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested kind extend interface Payload { compatZ: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. +optional-results-nested kind extend input Payload { compatZ: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. +optional-results-nested kind extend enum Payload { COMPAT_Z } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. +optional-results-nested kind extend scalar Payload @specifiedBy(url: "https://example.com") SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. +optional-results-nested undeclared extend type Payload @compatUndeclared SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested repeat extend type Payload { data: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +optional-results-nested location extend type Payload @specifiedBy SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself +options seed BUILT +options proxy FieldResolverError: Field 'Query.name' resolves to graphql.kickstart.tools.compat.scenarios.OptionsQuery.name, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionsQuery, so every query of the field will fail. +options kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +options kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +options kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +options kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +options undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +options repeat extend type Query { name: String! } SchemaError: Type 'Query' declares field 'name' more than once at line 1, column 21. +options location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +polymorphism seed BUILT +polymorphism proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.PolymorphismQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.PolymorphismQuery, so every query of the field will fail. +polymorphism kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +polymorphism kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +polymorphism kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +polymorphism kind extend union Query = Novel BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +polymorphism kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +polymorphism undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +polymorphism repeat extend type Query { node(id: ID!): Node } SchemaError: Type 'Query' declares field 'node' more than once at line 1, column 21. +polymorphism location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +polymorphism kind extend type Node { compatZ: String } BUILT Type 'Node' is defined as an interface, but extended as an object type. The extension is ignored. +polymorphism kind extend input Node { compatZ: String } BUILT Type 'Node' is defined as an interface, but extended as an input object type. The extension is ignored. +polymorphism kind extend enum Node { COMPAT_Z } BUILT Type 'Node' is defined as an interface, but extended as an enum. The extension is ignored. +polymorphism kind extend union Node = Novel BUILT Type 'Node' is defined as an interface, but extended as a union. The extension is ignored. +polymorphism kind extend scalar Node @specifiedBy(url: "https://example.com") BUILT Type 'Node' is defined as an interface, but extended as a scalar. The extension is ignored. +polymorphism undeclared extend interface Node @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +polymorphism repeat extend interface Node { id: ID! } SchemaError: Type 'Node' declares field 'id' more than once at line 1, column 25. +polymorphism location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. +polymorphism kind extend interface Novel { compatZ: String } BUILT Type 'Novel' is defined as an object type, but extended as an interface. The extension is ignored. +polymorphism kind extend input Novel { compatZ: String } BUILT Type 'Novel' is defined as an object type, but extended as an input object type. The extension is ignored. +polymorphism kind extend enum Novel { COMPAT_Z } BUILT Type 'Novel' is defined as an object type, but extended as an enum. The extension is ignored. +polymorphism kind extend union Novel = Writer BUILT Type 'Novel' is defined as an object type, but extended as a union. The extension is ignored. +polymorphism kind extend scalar Novel @specifiedBy(url: "https://example.com") BUILT Type 'Novel' is defined as an object type, but extended as a scalar. The extension is ignored. +polymorphism undeclared extend type Novel @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +polymorphism repeat extend type Novel { id: ID! } SchemaError: Type 'Novel' declares field 'id' more than once at line 1, column 21. +polymorphism location extend type Novel @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +polymorphism kind extend interface Writer { compatZ: String } BUILT Type 'Writer' is defined as an object type, but extended as an interface. The extension is ignored. +polymorphism kind extend input Writer { compatZ: String } BUILT Type 'Writer' is defined as an object type, but extended as an input object type. The extension is ignored. +polymorphism kind extend enum Writer { COMPAT_Z } BUILT Type 'Writer' is defined as an object type, but extended as an enum. The extension is ignored. +polymorphism kind extend union Writer = Novel BUILT Type 'Writer' is defined as an object type, but extended as a union. The extension is ignored. +polymorphism kind extend scalar Writer @specifiedBy(url: "https://example.com") BUILT Type 'Writer' is defined as an object type, but extended as a scalar. The extension is ignored. +polymorphism undeclared extend type Writer @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +polymorphism repeat extend type Writer { id: ID! } SchemaError: Type 'Writer' declares field 'id' more than once at line 1, column 22. +polymorphism location extend type Writer @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +polymorphism kind extend type SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an object type. The extension is ignored. +polymorphism kind extend interface SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an interface. The extension is ignored. +polymorphism kind extend input SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an input object type. The extension is ignored. +polymorphism kind extend enum SearchResult { COMPAT_Z } BUILT Type 'SearchResult' is defined as a union, but extended as an enum. The extension is ignored. +polymorphism kind extend scalar SearchResult @specifiedBy(url: "https://example.com") BUILT Type 'SearchResult' is defined as a union, but extended as a scalar. The extension is ignored. +polymorphism undeclared extend union SearchResult @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +polymorphism repeat extend union SearchResult = Novel SchemaError: Type 'SearchResult' declares member 'Novel' more than once at line 1, column 29. +polymorphism location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. +read-only-schema seed BUILT +read-only-schema proxy FieldResolverError: Field 'Query.animal' resolves to graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery.animal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery, so every query of the field will fail. +read-only-schema kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +read-only-schema kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +read-only-schema kind extend union Query = Dog BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +read-only-schema kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend type Query { animal(name: String!): Animal } SchemaError: Type 'Query' declares field 'animal' more than once at line 1, column 21. +read-only-schema location extend type Query @tag SchemaError: Directive @tag at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +read-only-schema location extend type Query @contact SchemaError: Directive @contact at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. +read-only-schema location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema kind extend interface Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an interface. The extension is ignored. +read-only-schema kind extend input Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Mutation { COMPAT_Z } BUILT Type 'Mutation' is defined as an object type, but extended as an enum. The extension is ignored. +read-only-schema kind extend union Mutation = Dog BUILT Type 'Mutation' is defined as an object type, but extended as a union. The extension is ignored. +read-only-schema kind extend scalar Mutation @specifiedBy(url: "https://example.com") BUILT Type 'Mutation' is defined as an object type, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend type Mutation @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend type Mutation { adopt(name: String!): Animal! } SchemaError: Type 'Mutation' declares field 'adopt' more than once at line 1, column 24. +read-only-schema location extend type Mutation @tag SchemaError: Directive @tag at line 1, column 22 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +read-only-schema location extend type Mutation @contact SchemaError: Directive @contact at line 1, column 22 is applied to OBJECT, but it's declared on SCHEMA. +read-only-schema location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. +read-only-schema kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. +read-only-schema kind extend union Animal = Dog BUILT Type 'Animal' is defined as an interface, but extended as a union. The extension is ignored. +read-only-schema kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend interface Animal @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend interface Animal { name: String! @tag(name: "public") } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. +read-only-schema location extend interface Animal @tag SchemaError: Directive @tag at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. +read-only-schema location extend interface Animal @contact SchemaError: Directive @contact at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. +read-only-schema location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +read-only-schema kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. +read-only-schema kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. +read-only-schema kind extend union Dog = Cat BUILT Type 'Dog' is defined as an object type, but extended as a union. The extension is ignored. +read-only-schema kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend type Dog @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend type Dog { name: String! @tag(name: "public") } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. +read-only-schema location extend type Dog @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +read-only-schema location extend type Dog @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. +read-only-schema location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema kind extend interface Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an interface. The extension is ignored. +read-only-schema kind extend input Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Cat { COMPAT_Z } BUILT Type 'Cat' is defined as an object type, but extended as an enum. The extension is ignored. +read-only-schema kind extend union Cat = Dog BUILT Type 'Cat' is defined as an object type, but extended as a union. The extension is ignored. +read-only-schema kind extend scalar Cat @specifiedBy(url: "https://example.com") BUILT Type 'Cat' is defined as an object type, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend type Cat @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend type Cat { name: String! @tag(name: "public") } SchemaError: Type 'Cat' declares field 'name' more than once at line 1, column 19. +read-only-schema location extend type Cat @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +read-only-schema location extend type Cat @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. +read-only-schema location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. +read-only-schema kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. +read-only-schema kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. +read-only-schema kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is defined as a union, but extended as an enum. The extension is ignored. +read-only-schema kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. +read-only-schema undeclared extend union Pet @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +read-only-schema repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. +read-only-schema location extend union Pet @tag SchemaError: Directive @tag at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. +read-only-schema location extend union Pet @contact SchemaError: Directive @contact at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. +read-only-schema location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +recursive-inputs seed BUILT +recursive-inputs proxy FieldResolverError: Field 'Query.describe' resolves to graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery.describe, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery, so every query of the field will fail. +recursive-inputs kind extend type LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an object type. The extension is ignored. +recursive-inputs kind extend interface LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an interface. The extension is ignored. +recursive-inputs kind extend input LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an input object type. The extension is ignored. +recursive-inputs kind extend scalar LimitUnit @specifiedBy(url: "https://example.com") BUILT Type 'LimitUnit' is defined as an enum, but extended as a scalar. The extension is ignored. +recursive-inputs undeclared extend enum LimitUnit @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +recursive-inputs repeat extend enum LimitUnit { ITEMS } SchemaError: Type 'LimitUnit' declares value 'ITEMS' more than once at line 1, column 25. +recursive-inputs location extend enum LimitUnit @limit SchemaError: Directive @limit at line 1, column 23 is applied to ENUM, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. +recursive-inputs location extend enum LimitUnit @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to ENUM, but it's declared on SCALAR. +recursive-inputs kind extend type RangeInput { compatZ: String } BUILT Type 'RangeInput' is defined as an input object type, but extended as an object type. The extension is ignored. +recursive-inputs kind extend interface RangeInput { compatZ: String } BUILT Type 'RangeInput' is defined as an input object type, but extended as an interface. The extension is ignored. +recursive-inputs kind extend enum RangeInput { COMPAT_Z } BUILT Type 'RangeInput' is defined as an input object type, but extended as an enum. The extension is ignored. +recursive-inputs kind extend scalar RangeInput @specifiedBy(url: "https://example.com") BUILT Type 'RangeInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +recursive-inputs undeclared extend input RangeInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +recursive-inputs repeat extend input RangeInput { min: Int! } SchemaError: Type 'RangeInput' declares field 'min' more than once at line 1, column 27. +recursive-inputs location extend input RangeInput @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. +recursive-inputs location extend input RangeInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +recursive-inputs kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +recursive-inputs kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +recursive-inputs kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +recursive-inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +recursive-inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +recursive-inputs repeat extend type Query { describe(filter: TreeFilter!): String! @limit(range: {min : 0, max : 5}, labels: ["a", "b"]) } SchemaError: Type 'Query' declares field 'describe' more than once at line 1, column 21. +recursive-inputs location extend type Query @limit SchemaError: Directive @limit at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. +recursive-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +recursive-inputs kind extend type TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an object type. The extension is ignored. +recursive-inputs kind extend interface TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an interface. The extension is ignored. +recursive-inputs kind extend enum TreeFilter { COMPAT_Z } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an enum. The extension is ignored. +recursive-inputs kind extend scalar TreeFilter @specifiedBy(url: "https://example.com") BUILT Type 'TreeFilter' is defined as an input object type, but extended as a scalar. The extension is ignored. +recursive-inputs undeclared extend input TreeFilter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +recursive-inputs repeat extend input TreeFilter { name: String } SchemaError: Type 'TreeFilter' declares field 'name' more than once at line 1, column 27. +recursive-inputs location extend input TreeFilter @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. +recursive-inputs location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +recursive-inputs kind extend type ChildFilter { compatZ: String } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an object type. The extension is ignored. +recursive-inputs kind extend interface ChildFilter { compatZ: String } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an interface. The extension is ignored. +recursive-inputs kind extend enum ChildFilter { COMPAT_Z } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an enum. The extension is ignored. +recursive-inputs kind extend scalar ChildFilter @specifiedBy(url: "https://example.com") BUILT Type 'ChildFilter' is defined as an input object type, but extended as a scalar. The extension is ignored. +recursive-inputs undeclared extend input ChildFilter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +recursive-inputs repeat extend input ChildFilter { parent: TreeFilter } SchemaError: Type 'ChildFilter' declares field 'parent' more than once at line 1, column 28. +recursive-inputs location extend input ChildFilter @limit SchemaError: Directive @limit at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. +recursive-inputs location extend input ChildFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on SCALAR. +scalar-args seed BUILT +scalar-args proxy FieldResolverError: Field 'Query.tag' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.tag, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. +scalar-args kind extend type Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-args kind extend interface Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-args kind extend input Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum Tag { COMPAT_Z } BUILT Type 'Tag' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-args undeclared extend scalar Tag @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args argval extend scalar Tag @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Tag @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Tag @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args kind extend type Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-args kind extend interface Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-args kind extend input Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum Token { COMPAT_Z } BUILT Type 'Token' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-args undeclared extend scalar Token @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args argval extend scalar Token @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Token @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Token @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args kind extend type TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-args kind extend interface TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-args kind extend input TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum TypedToken { COMPAT_Z } BUILT Type 'TypedToken' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-args undeclared extend scalar TypedToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args argval extend scalar TypedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar TypedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar TypedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args kind extend type WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-args kind extend interface WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-args kind extend input WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum WrappedToken { COMPAT_Z } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-args undeclared extend scalar WrappedToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args argval extend scalar WrappedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar WrappedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar WrappedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args kind extend type IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-args kind extend interface IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-args kind extend input IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum IdToken { COMPAT_Z } BUILT Type 'IdToken' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-args undeclared extend scalar IdToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args argval extend scalar IdToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar IdToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar IdToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +scalar-args kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +scalar-args kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +scalar-args kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +scalar-args undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args repeat extend type Query { tag(tag: Tag!): String! } SchemaError: Type 'Query' declares field 'tag' more than once at line 1, column 21. +scalar-args location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +scalar-args kind extend type TokenInput { compatZ: String } BUILT Type 'TokenInput' is defined as an input object type, but extended as an object type. The extension is ignored. +scalar-args kind extend interface TokenInput { compatZ: String } BUILT Type 'TokenInput' is defined as an input object type, but extended as an interface. The extension is ignored. +scalar-args kind extend enum TokenInput { COMPAT_Z } BUILT Type 'TokenInput' is defined as an input object type, but extended as an enum. The extension is ignored. +scalar-args kind extend scalar TokenInput @specifiedBy(url: "https://example.com") BUILT Type 'TokenInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +scalar-args undeclared extend input TokenInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args repeat extend input TokenInput { token: Token } SchemaError: Type 'TokenInput' declares field 'token' more than once at line 1, column 27. +scalar-args location extend input TokenInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +scalar-args kind extend type MarkedTokensInput { compatZ: String } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an object type. The extension is ignored. +scalar-args kind extend interface MarkedTokensInput { compatZ: String } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an interface. The extension is ignored. +scalar-args kind extend enum MarkedTokensInput { COMPAT_Z } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an enum. The extension is ignored. +scalar-args kind extend scalar MarkedTokensInput @specifiedBy(url: "https://example.com") BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +scalar-args undeclared extend input MarkedTokensInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-args repeat extend input MarkedTokensInput { typed: TypedToken } SchemaError: Type 'MarkedTokensInput' declares field 'typed' more than once at line 1, column 34. +scalar-args location extend input MarkedTokensInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 32 is applied to INPUT_OBJECT, but it's declared on SCALAR. +scalar-directives seed SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives proxy FieldResolverError: Field 'Query.today' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.today, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. +scalar-directives kind extend type Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Date { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives undeclared extend scalar Date @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-directives argval extend scalar Date @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives repeat-directive extend scalar Date @since @since SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Date @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives kind extend type DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum DateTime { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives undeclared extend scalar DateTime @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-directives argval extend scalar DateTime @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives repeat-directive extend scalar DateTime @since @since SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives kind extend type Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Money { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives undeclared extend scalar Money @compatUndeclared SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives repeat-directive extend scalar Money @since @since SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar Money @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives kind extend interface Query { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Query { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Query { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +scalar-directives kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +scalar-directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives repeat extend type Query { today: Date @since(date: "2021-01-01") } SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives location extend type Query @since SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives location extend type Query @unit SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives location extend type Query @specifiedBy SchemaError: Found applied directive currency without corresponding directive definition. +sourceless seed BUILT +sourceless proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. +sourceless kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless kind extend union Query = Folder BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +sourceless kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. +sourceless location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless kind extend interface Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless kind extend input Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless kind extend enum Folder { COMPAT_Z } BUILT Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless kind extend union Folder = Image BUILT Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. +sourceless kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless repeat extend type Folder { supportedFileTypes: [String!]! } SchemaError: Type 'Folder' declares field 'supportedFileTypes' more than once at line 1, column 22. +sourceless location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +sourceless kind extend interface Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless kind extend input Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless kind extend enum Image { COMPAT_Z } BUILT Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless kind extend union Image = Folder BUILT Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. +sourceless kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. +sourceless location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless-misbound seed FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound proxy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Query = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound repeat extend type Query { folder: Folder! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound kind extend interface Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Folder { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Folder = Image FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Folder @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Folder @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound repeat extend type Folder { images: [Image!]! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound location extend type Folder @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound kind extend interface Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Image { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Image = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Image @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Image @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound repeat extend type Image { name: String! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-misbound location extend type Image @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless-shadowed seed BUILT +sourceless-shadowed proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. +sourceless-shadowed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-shadowed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-shadowed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-shadowed kind extend union Query = Folder BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-shadowed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-shadowed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless-shadowed repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. +sourceless-shadowed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless-shadowed kind extend interface Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-shadowed kind extend input Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-shadowed kind extend enum Folder { COMPAT_Z } BUILT Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-shadowed kind extend union Folder = Image BUILT Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-shadowed kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-shadowed undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless-shadowed repeat extend type Folder { images: [Image!]! } SchemaError: Type 'Folder' declares field 'images' more than once at line 1, column 22. +sourceless-shadowed location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +sourceless-shadowed kind extend interface Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-shadowed kind extend input Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-shadowed kind extend enum Image { COMPAT_Z } BUILT Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-shadowed kind extend union Image = Folder BUILT Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-shadowed kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-shadowed undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +sourceless-shadowed repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. +sourceless-shadowed location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless-unimplemented seed BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented kind extend interface Query { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-unimplemented kind extend input Query { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-unimplemented kind extend enum Query { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-unimplemented kind extend union Query = Folder BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-unimplemented kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-unimplemented undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented kind extend interface Folder { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-unimplemented kind extend input Folder { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-unimplemented kind extend enum Folder { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-unimplemented kind extend union Folder = Image BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-unimplemented kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-unimplemented undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented repeat extend type Folder { images: [Image!]! } SchemaError: Type 'Folder' declares field 'images' more than once at line 1, column 22. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented kind extend interface Image { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-unimplemented kind extend input Image { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-unimplemented kind extend enum Image { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-unimplemented kind extend union Image = Folder BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-unimplemented kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-unimplemented undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +type-extensions seed BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions kind extend input Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions kind extend enum Query { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions kind extend union Query = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend type Query { node(id: ID!): Node } SchemaError: Type 'Query' declares field 'node' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend type Node { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend input Node { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend enum Node { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend union Node = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Node @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions undeclared extend interface Node @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend interface Node { "The base id" id: ID! } SchemaError: Type 'Node' declares field 'id' more than once at line 1, column 25. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend interface Node @owner SchemaError: Directive @owner at line 1, column 23 is applied to INTERFACE, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Article { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend input Article { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend enum Article { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend union Article = Video BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Article @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions undeclared extend type Article @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend type Article { id: ID! } SchemaError: Type 'Article' declares field 'id' more than once at line 1, column 23. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @owner(team: 5) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @owner(team: NOPE) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @owner(team: null) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Article @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Video { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions kind extend input Video { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions kind extend enum Video { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions kind extend union Video = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Video @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions undeclared extend type Video @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend type Video { id: ID! } SchemaError: Type 'Video' declares field 'id' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Video @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend type SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an object type. The extension is ignored. +type-extensions kind extend interface SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an interface. The extension is ignored. +type-extensions kind extend input SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an input object type. The extension is ignored. +type-extensions kind extend enum SearchResult { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an enum. The extension is ignored. +type-extensions kind extend scalar SearchResult @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as a scalar. The extension is ignored. +type-extensions undeclared extend union SearchResult @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend union SearchResult = Article SchemaError: Type 'SearchResult' declares member 'Article' more than once at line 1, column 29. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend union SearchResult @owner SchemaError: Directive @owner at line 1, column 27 is applied to UNION, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend type Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend input Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend union Color = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Color @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions undeclared extend enum Color @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend enum Color { RED } SchemaError: Type 'Color' declares value 'RED' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend enum Color @owner SchemaError: Directive @owner at line 1, column 19 is applied to ENUM, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend type Filter { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Filter { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend enum Filter { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend union Filter = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Filter @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions undeclared extend input Filter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend input Filter { term: String } SchemaError: Type 'Filter' declares field 'term' more than once at line 1, column 23. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend input Filter @owner SchemaError: Directive @owner at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend interface Note { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions kind extend input Note { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions kind extend enum Note { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions kind extend union Note = Article BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions kind extend scalar Note @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions undeclared extend type Note @compatUndeclared BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions repeat extend type Note { text: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @tag(name: 5) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @tag(name: NOPE) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @tag(name: null) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @owner(team: 5) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @owner(team: NOPE) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Note @owner(team: null) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Note @specifiedBy BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-input-order seed BUILT +type-extensions-input-order proxy FieldResolverError: Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery, so every query of the field will fail. +type-extensions-input-order kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-input-order kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-input-order kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-input-order kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-input-order undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-input-order repeat extend type Query { count(filter: Filter): Int! } SchemaError: Type 'Query' declares field 'count' more than once at line 1, column 21. +type-extensions-input-order location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-input-order kind extend type Filter { compatZ: String } BUILT Type 'Filter' is defined as an input object type, but extended as an object type. The extension is ignored. +type-extensions-input-order kind extend interface Filter { compatZ: String } BUILT Type 'Filter' is defined as an input object type, but extended as an interface. The extension is ignored. +type-extensions-input-order kind extend enum Filter { COMPAT_Z } BUILT Type 'Filter' is defined as an input object type, but extended as an enum. The extension is ignored. +type-extensions-input-order kind extend scalar Filter @specifiedBy(url: "https://example.com") BUILT Type 'Filter' is defined as an input object type, but extended as a scalar. The extension is ignored. +type-extensions-input-order undeclared extend input Filter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-input-order repeat extend input Filter { term: String } SchemaError: Type 'Filter' declares field 'term' more than once at line 1, column 23. +type-extensions-input-order location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. +type-extensions-repeated-fields seed SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields proxy FieldResolverError: Field 'Query.typeAndExtension' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.typeAndExtension, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. +type-extensions-repeated-fields kind extend interface Query { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend input Query { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-repeated-fields kind extend enum Query { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union Query = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend type Query @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend type Query { typeAndExtension: TypeAndExtension } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend type Query @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend interface TypeAndExtension { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TypeAndExtension' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend input TypeAndExtension { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TypeAndExtension' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-repeated-fields kind extend enum TypeAndExtension { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TypeAndExtension' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union TypeAndExtension = TwoExtensions SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TypeAndExtension' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar TypeAndExtension @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TypeAndExtension' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend type TypeAndExtension @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend type TypeAndExtension { "From the type" name: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend type TypeAndExtension @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend interface TwoExtensions { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TwoExtensions' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend input TwoExtensions { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TwoExtensions' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-repeated-fields kind extend enum TwoExtensions { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TwoExtensions' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union TwoExtensions = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TwoExtensions' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar TwoExtensions @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'TwoExtensions' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend type TwoExtensions @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend type TwoExtensions { id: ID } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend type TwoExtensions @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend interface OneDefinition { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'OneDefinition' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend input OneDefinition { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'OneDefinition' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-repeated-fields kind extend enum OneDefinition { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'OneDefinition' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union OneDefinition = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'OneDefinition' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar OneDefinition @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'OneDefinition' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend type OneDefinition @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend type OneDefinition { "The first" name: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend type OneDefinition @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend type InputTypeAndExtension { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTypeAndExtension' is defined as an input object type, but extended as an object type. The extension is ignored. +type-extensions-repeated-fields kind extend interface InputTypeAndExtension { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTypeAndExtension' is defined as an input object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend enum InputTypeAndExtension { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTypeAndExtension' is defined as an input object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union InputTypeAndExtension = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTypeAndExtension' is defined as an input object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar InputTypeAndExtension @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTypeAndExtension' is defined as an input object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend input InputTypeAndExtension @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend input InputTypeAndExtension { "From the type" id: ID } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend input InputTypeAndExtension @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend type InputTwoExtensions { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTwoExtensions' is defined as an input object type, but extended as an object type. The extension is ignored. +type-extensions-repeated-fields kind extend interface InputTwoExtensions { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTwoExtensions' is defined as an input object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend enum InputTwoExtensions { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTwoExtensions' is defined as an input object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union InputTwoExtensions = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTwoExtensions' is defined as an input object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar InputTwoExtensions @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputTwoExtensions' is defined as an input object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend input InputTwoExtensions @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend input InputTwoExtensions { term: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend input InputTwoExtensions @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields kind extend type InputOneDefinition { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputOneDefinition' is defined as an input object type, but extended as an object type. The extension is ignored. +type-extensions-repeated-fields kind extend interface InputOneDefinition { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputOneDefinition' is defined as an input object type, but extended as an interface. The extension is ignored. +type-extensions-repeated-fields kind extend enum InputOneDefinition { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputOneDefinition' is defined as an input object type, but extended as an enum. The extension is ignored. +type-extensions-repeated-fields kind extend union InputOneDefinition = TypeAndExtension SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputOneDefinition' is defined as an input object type, but extended as a union. The extension is ignored. +type-extensions-repeated-fields kind extend scalar InputOneDefinition @specifiedBy(url: "https://example.com") SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'InputOneDefinition' is defined as an input object type, but extended as a scalar. The extension is ignored. +type-extensions-repeated-fields undeclared extend input InputOneDefinition @compatUndeclared SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields repeat extend input InputOneDefinition { "The first" id: ID } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-repeated-fields location extend input InputOneDefinition @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. +type-extensions-sealed seed BUILT +type-extensions-sealed proxy FieldResolverError: Field 'Query.pets' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery.pets, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery, so every query of the field will fail. +type-extensions-sealed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Query = Dog BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend type Query { pets: [Pet!]! } SchemaError: Type 'Query' declares field 'pets' more than once at line 1, column 21. +type-extensions-sealed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. +type-extensions-sealed kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is defined as a union, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend union Pet @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. +type-extensions-sealed location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +type-extensions-sealed kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Dog = Cat BUILT Type 'Dog' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend type Dog @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend type Dog { name: String } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. +type-extensions-sealed location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed kind extend interface Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Cat { COMPAT_Z } BUILT Type 'Cat' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Cat = Dog BUILT Type 'Cat' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Cat @specifiedBy(url: "https://example.com") BUILT Type 'Cat' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend type Cat @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend type Cat { lives: Int } SchemaError: Type 'Cat' declares field 'lives' more than once at line 1, column 19. +type-extensions-sealed location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. +type-extensions-sealed kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Animal = Dog BUILT Type 'Animal' is defined as an interface, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend interface Animal @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend interface Animal { name: String } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. +type-extensions-sealed location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +type-extensions-sealed kind extend interface Cow { compatZ: String } BUILT Type 'Cow' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Cow { compatZ: String } BUILT Type 'Cow' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Cow { COMPAT_Z } BUILT Type 'Cow' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Cow = Dog BUILT Type 'Cow' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Cow @specifiedBy(url: "https://example.com") BUILT Type 'Cow' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend type Cow @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend type Cow { name: String } SchemaError: Type 'Cow' declares field 'name' more than once at line 1, column 19. +type-extensions-sealed location extend type Cow @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed kind extend interface Horse { compatZ: String } BUILT Type 'Horse' is defined as an object type, but extended as an interface. The extension is ignored. +type-extensions-sealed kind extend input Horse { compatZ: String } BUILT Type 'Horse' is defined as an object type, but extended as an input object type. The extension is ignored. +type-extensions-sealed kind extend enum Horse { COMPAT_Z } BUILT Type 'Horse' is defined as an object type, but extended as an enum. The extension is ignored. +type-extensions-sealed kind extend union Horse = Dog BUILT Type 'Horse' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions-sealed kind extend scalar Horse @specifiedBy(url: "https://example.com") BUILT Type 'Horse' is defined as an object type, but extended as a scalar. The extension is ignored. +type-extensions-sealed undeclared extend type Horse @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +type-extensions-sealed repeat extend type Horse { name: String } SchemaError: Type 'Horse' declares field 'name' more than once at line 1, column 21. +type-extensions-sealed location extend type Horse @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +unmapped-inputs seed BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. +unmapped-inputs proxy FieldResolverError: Field 'Query.ignored' resolves to graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery.ignored, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery, so every query of the field will fail. +unmapped-inputs kind extend interface Query { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +unmapped-inputs kind extend input Query { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +unmapped-inputs kind extend enum Query { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +unmapped-inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +unmapped-inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +unmapped-inputs repeat extend type Query { ignored(input: IgnoredInput!): String } SchemaError: Type 'Query' declares field 'ignored' more than once at line 1, column 21. +unmapped-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +unmapped-inputs kind extend type IgnoredInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an object type. The extension is ignored. +unmapped-inputs kind extend interface IgnoredInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an interface. The extension is ignored. +unmapped-inputs kind extend enum IgnoredInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an enum. The extension is ignored. +unmapped-inputs kind extend scalar IgnoredInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +unmapped-inputs undeclared extend input IgnoredInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +unmapped-inputs repeat extend input IgnoredInput { inner: InnerInput } SchemaError: Type 'IgnoredInput' declares field 'inner' more than once at line 1, column 29. +unmapped-inputs location extend input IgnoredInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs kind extend type InnerInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an object type. The extension is ignored. +unmapped-inputs kind extend interface InnerInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an interface. The extension is ignored. +unmapped-inputs kind extend enum InnerInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an enum. The extension is ignored. +unmapped-inputs kind extend scalar InnerInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +unmapped-inputs undeclared extend input InnerInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +unmapped-inputs repeat extend input InnerInput { name: String } SchemaError: Type 'InnerInput' declares field 'name' more than once at line 1, column 27. +unmapped-inputs location extend input InnerInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs kind extend type TypoInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an object type. The extension is ignored. +unmapped-inputs kind extend interface TypoInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an interface. The extension is ignored. +unmapped-inputs kind extend enum TypoInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an enum. The extension is ignored. +unmapped-inputs kind extend scalar TypoInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +unmapped-inputs undeclared extend input TypoInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +unmapped-inputs repeat extend input TypoInput { item: ItemInput } SchemaError: Type 'TypoInput' declares field 'item' more than once at line 1, column 26. +unmapped-inputs location extend input TypoInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs kind extend type ItemInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an object type. The extension is ignored. +unmapped-inputs kind extend interface ItemInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an interface. The extension is ignored. +unmapped-inputs kind extend enum ItemInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an enum. The extension is ignored. +unmapped-inputs kind extend scalar ItemInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as a scalar. The extension is ignored. +unmapped-inputs undeclared extend input ItemInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +unmapped-inputs repeat extend input ItemInput { name: String } SchemaError: Type 'ItemInput' declares field 'name' more than once at line 1, column 26. +unmapped-inputs location extend input ItemInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +wiring-shapes seed BUILT +wiring-shapes proxy FieldResolverError: Field 'Query.trees' resolves to graphql.kickstart.tools.compat.scenarios.WiringShapesQuery.trees, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.WiringShapesQuery, so every query of the field will fail. +wiring-shapes kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +wiring-shapes kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +wiring-shapes kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +wiring-shapes kind extend union Query = Person BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +wiring-shapes kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend type Query { trees(filter: TreeFilter): Int } SchemaError: Type 'Query' declares field 'trees' more than once at line 1, column 21. +wiring-shapes location extend type Query @inspect SchemaError: Directive @inspect at line 1, column 19 is applied to OBJECT, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend type Query @required SchemaError: Directive @required at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend type Query @described @described SchemaError: Directive @described at line 1, column 30 isn't repeatable but is applied more than once. +wiring-shapes location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +wiring-shapes kind extend type TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an object type. The extension is ignored. +wiring-shapes kind extend interface TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an interface. The extension is ignored. +wiring-shapes kind extend enum TreeFilter { COMPAT_Z } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an enum. The extension is ignored. +wiring-shapes kind extend union TreeFilter = Person BUILT Type 'TreeFilter' is defined as an input object type, but extended as a union. The extension is ignored. +wiring-shapes kind extend scalar TreeFilter @specifiedBy(url: "https://example.com") BUILT Type 'TreeFilter' is defined as an input object type, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend input TreeFilter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend input TreeFilter { name: String } SchemaError: Type 'TreeFilter' declares field 'name' more than once at line 1, column 27. +wiring-shapes location extend input TreeFilter @inspect SchemaError: Directive @inspect at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend input TreeFilter @required SchemaError: Directive @required at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend input TreeFilter @described @described SchemaError: Directive @described at line 1, column 25 isn't repeatable but is applied more than once. +wiring-shapes location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +wiring-shapes kind extend type Named { compatZ: String } BUILT Type 'Named' is defined as an interface, but extended as an object type. The extension is ignored. +wiring-shapes kind extend input Named { compatZ: String } BUILT Type 'Named' is defined as an interface, but extended as an input object type. The extension is ignored. +wiring-shapes kind extend enum Named { COMPAT_Z } BUILT Type 'Named' is defined as an interface, but extended as an enum. The extension is ignored. +wiring-shapes kind extend union Named = Person BUILT Type 'Named' is defined as an interface, but extended as a union. The extension is ignored. +wiring-shapes kind extend scalar Named @specifiedBy(url: "https://example.com") BUILT Type 'Named' is defined as an interface, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend interface Named @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend interface Named { name: String } SchemaError: Type 'Named' declares field 'name' more than once at line 1, column 26. +wiring-shapes location extend interface Named @inspect SchemaError: Directive @inspect at line 1, column 24 is applied to INTERFACE, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend interface Named @required SchemaError: Directive @required at line 1, column 24 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend interface Named @described @described SchemaError: Directive @described at line 1, column 24 isn't repeatable but is applied more than once. +wiring-shapes location extend interface Named @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INTERFACE, but it's declared on SCALAR. +wiring-shapes kind extend interface Person { compatZ: String } BUILT Type 'Person' is defined as an object type, but extended as an interface. The extension is ignored. +wiring-shapes kind extend input Person { compatZ: String } BUILT Type 'Person' is defined as an object type, but extended as an input object type. The extension is ignored. +wiring-shapes kind extend enum Person { COMPAT_Z } BUILT Type 'Person' is defined as an object type, but extended as an enum. The extension is ignored. +wiring-shapes kind extend scalar Person @specifiedBy(url: "https://example.com") BUILT Type 'Person' is defined as an object type, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend type Person @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend type Person { name: String } SchemaError: Type 'Person' declares field 'name' more than once at line 1, column 22. +wiring-shapes location extend type Person @inspect SchemaError: Directive @inspect at line 1, column 20 is applied to OBJECT, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend type Person @required SchemaError: Directive @required at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend type Person @described @described SchemaError: Directive @described at line 1, column 20 isn't repeatable but is applied more than once. +wiring-shapes location extend type Person @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +wiring-shapes kind extend type Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an object type. The extension is ignored. +wiring-shapes kind extend interface Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an interface. The extension is ignored. +wiring-shapes kind extend input Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an input object type. The extension is ignored. +wiring-shapes kind extend enum Someone { COMPAT_Z } BUILT Type 'Someone' is defined as a union, but extended as an enum. The extension is ignored. +wiring-shapes kind extend scalar Someone @specifiedBy(url: "https://example.com") BUILT Type 'Someone' is defined as a union, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend union Someone @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend union Someone = Person SchemaError: Type 'Someone' declares member 'Person' more than once at line 1, column 24. +wiring-shapes location extend union Someone @inspect SchemaError: Directive @inspect at line 1, column 22 is applied to UNION, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend union Someone @required SchemaError: Directive @required at line 1, column 22 is applied to UNION, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend union Someone @described @described SchemaError: Directive @described at line 1, column 22 isn't repeatable but is applied more than once. +wiring-shapes location extend union Someone @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to UNION, but it's declared on SCALAR. +wiring-shapes kind extend type State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an object type. The extension is ignored. +wiring-shapes kind extend interface State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an interface. The extension is ignored. +wiring-shapes kind extend input State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an input object type. The extension is ignored. +wiring-shapes kind extend union State = Person BUILT Type 'State' is defined as an enum, but extended as a union. The extension is ignored. +wiring-shapes kind extend scalar State @specifiedBy(url: "https://example.com") BUILT Type 'State' is defined as an enum, but extended as a scalar. The extension is ignored. +wiring-shapes undeclared extend enum State @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +wiring-shapes repeat extend enum State { ALIVE } SchemaError: Type 'State' declares value 'ALIVE' more than once at line 1, column 21. +wiring-shapes location extend enum State @inspect SchemaError: Directive @inspect at line 1, column 19 is applied to ENUM, but it's declared on INPUT_FIELD_DEFINITION. +wiring-shapes location extend enum State @required SchemaError: Directive @required at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. +wiring-shapes repeat-directive extend enum State @described @described SchemaError: Directive @described at line 1, column 19 isn't repeatable but is applied more than once. +wiring-shapes location extend enum State @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. From 865e2b3e06340ab72912cb1b5aa19a0dd59a9391 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:39:38 -0500 Subject: [PATCH 03/12] Protect only the variants of a scenario that built on the release An invalid extension can hide the error of a scenario that never built, so such a variant built on 14.2.0 by accident. --- .../kotlin/graphql/kickstart/tools/compat/CompatTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index 8db74386..debd6b05 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -35,12 +35,12 @@ class CompatTest { val accepted = acceptedFile.readLines().filter { it.isNotBlank() }.map { Regex(it.substringBefore('\t')) } val major = version.major > release.major - fun repeatsSeedBreak(key: CaseKey) = - key != key.seed && released[key.seed]?.built == true && outcomes[key.seed]?.error == outcomes.getValue(key).error + fun repeatsSeedBreak(key: CaseKey) = key != key.seed && outcomes[key.seed]?.error == outcomes.getValue(key).error fun warnedOnRelease(key: CaseKey) = - (released.getValue(key).warnings - if (key == key.seed) emptySet() else released[key.seed]?.warnings.orEmpty().toSet()).isNotEmpty() + (released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet()).isNotEmpty() - val broke = released.keys.filter { released.getValue(it).built && outcomes[it]?.built == false } + // a variant of a seed that threw on the release can build only by hiding the seed's own error + val broke = released.keys.filter { released[it.seed]?.built == true && released.getValue(it).built && outcomes[it]?.built == false } .filterNot(::repeatsSeedBreak) .filterNot { key -> accepted.any { it.containsMatchIn(key.toString()) } } .filterNot { major && warnedOnRelease(it) } From 2d33e9621d461725f72d3a00ff616e6a14b2c71b Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:39:58 -0500 Subject: [PATCH 04/12] Add the release capture step and enforce the compatibility rule --- AGENTS.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 4714eb7a..3fb4a472 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -49,6 +49,11 @@ Bugfixes and small features stop at this skill. Follow the [Releasing a version](https://github.com/graphql-java-kickstart/graphql-java-tools/wiki/Releasing-a-version) wiki page. `github-build.sh` and `.github/workflows/release.yml` do the version bump, tag and publish. +After the release is published, record what it builds, so `CompatTest` checks later changes against it. Check out the +release tag in a worktree, run `mvn -B -ntp clean test -Dtest=CompatTest -Dcompat.capture`, and open a PR with the +`src/test/resources/compat//` it writes: `cases.tsv` and an empty `accepted.txt`. A later break that the release +notes list goes into that `accepted.txt` as a regex for the case, a tab, and the issue. + ## Rules that need judgment No check can enforce these, so each one names the mistake it prevents. @@ -110,4 +115,4 @@ happening. "docs only" means nothing does yet, so the rule depends on you readin | A build you trust starts from an empty `target/`, so no class from an earlier build ships | `clean` in `probe.sh install`, docs only for your own `mvn` runs | | Agent worktrees and local settings stay out of commits | `.gitignore` | | Agent rules live in one committed file | This file. `CLAUDE.md` imports it | -| Invalid input that used to build logs a WARN until the next major | docs only | +| Invalid input that used to build logs a WARN until the next major | `CompatTest`, against the last release's results in `src/test/resources/compat` | From 4c7f2dbe012ae4370db4948d3dae4eddb5414618 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:42:07 -0500 Subject: [PATCH 05/12] Name the seed rule and drop comments the code says --- .../graphql/kickstart/tools/compat/CompatTest.kt | 16 ++++++---------- .../graphql/kickstart/tools/compat/Variants.kt | 4 ---- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index debd6b05..bc0e5927 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -11,10 +11,6 @@ import org.junit.Test import org.slf4j.LoggerFactory import java.io.File -/** - * Builds every scenario and its invalid variants, and fails when a case that built on the last release throws now. - * `-Dcompat.capture` records this checkout's results as the capture for its pom version instead. - */ class CompatTest { @Test fun `cases that built on the last release still build`() { @@ -35,12 +31,12 @@ class CompatTest { val accepted = acceptedFile.readLines().filter { it.isNotBlank() }.map { Regex(it.substringBefore('\t')) } val major = version.major > release.major + fun builtWithItsSeedOnRelease(key: CaseKey) = released[key.seed]?.built == true && released.getValue(key).built fun repeatsSeedBreak(key: CaseKey) = key != key.seed && outcomes[key.seed]?.error == outcomes.getValue(key).error fun warnedOnRelease(key: CaseKey) = (released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet()).isNotEmpty() - // a variant of a seed that threw on the release can build only by hiding the seed's own error - val broke = released.keys.filter { released[it.seed]?.built == true && released.getValue(it).built && outcomes[it]?.built == false } + val broke = released.keys.filter { builtWithItsSeedOnRelease(it) && outcomes[it]?.built == false } .filterNot(::repeatsSeedBreak) .filterNot { key -> accepted.any { it.containsMatchIn(key.toString()) } } .filterNot { major && warnedOnRelease(it) } @@ -50,13 +46,13 @@ class CompatTest { val cases = broke.take(SHOWN).joinToString("\n") { " $it\n ${outcomes.getValue(it).error}" } + if (broke.size > SHOWN) "\n and ${broke.size - SHOWN} more" else "" val byOperator = broke.groupingBy { it.operator }.eachCount().toSortedMap() + val deliberate = "A deliberate break that the release notes list goes into $acceptedFile as a regex for the case, a tab, and the issue." fail( if (major) { """ |${broke.size} cases built on $release with no WARN of their own and throw now $byOperator. |A major may reject only input that the last minor warned about. Log a WARN that names the type and the item in a - |${release.major}.x release first. A deliberate break that the release notes list goes into $acceptedFile as a - |regex for the case, a tab, and the issue. + |${release.major}.x release first. $deliberate |$cases """.trimMargin() } else { @@ -64,8 +60,7 @@ class CompatTest { |${broke.size} cases built on $release and throw now $byOperator. |Invalid input that built on the last release keeps building until the next major (AGENTS.md, Compatibility). |Instead of throwing, log a WARN that names the type and the item, open a GitHub issue with $target in its title, - |and leave `// TODO in $target (#N)`. A deliberate break that the release notes list goes into - |$acceptedFile as a regex for the case, a tab, and the issue. + |and leave `// TODO in $target (#N)`. $deliberate |$cases """.trimMargin() } @@ -79,6 +74,7 @@ class Outcome(val error: String?, val warnings: List) { private val CAPTURES = File("src/test/resources/compat") private const val SHOWN = 50 + private fun runAll(): Map { // the tests run in the library's module, which neither reads logback's nor exports the scenarios to kotlin-reflect val module = CompatTest::class.java.module diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt index 8f9c795f..06ca1d27 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt @@ -27,10 +27,6 @@ data class CaseKey(val scenario: String, val operator: String, val snippet: Stri class Variant(val key: CaseKey, val build: () -> Unit) -/** - * The scenario as it is, plus one invalid SDL snippet per grammar rule it can break, plus every resolver behind a JDK proxy. - * The rules come from the SDL grammar, not from known bugs, so a new rejection of any of them shows up. - */ fun variants(scenario: Scenario): List { fun variant(operator: String, snippet: String = "", resolvers: () -> List> = { scenario.resolvers }) = Variant(CaseKey(scenario.name, operator, snippet)) { From b43e8c7a614659e7f9a5e4aac971293650ca378f Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:52:07 -0500 Subject: [PATCH 06/12] Match the probe scenarios and their pages to what 15.0.0 rejects directive-drift and scalar-directives teach behavior that still builds, so they drop the applications 15.0.0 rejects and the 15.0.0 capture is retaken for them. directives-invalid, context-misbound and jdk-proxy exist to show input 15.0.0 now rejects, so their pages say they exit 2 and quote the error. --- .../skills/verify-tools/features/README.md | 6 +- .../features/context-and-environment.md | 20 +- .../features/directives-and-relay.md | 51 +- .../skills/verify-tools/features/proxies.md | 30 +- .../tools/compat/scenarios/DirectiveDrift.kt | 2 - src/test/resources/compat/15.0.0/cases.tsv | 509 +++++++++--------- .../scenarios/directive-drift/schema.graphqls | 20 +- .../scalar-directives/schema.graphqls | 2 +- 8 files changed, 315 insertions(+), 325 deletions(-) diff --git a/.claude/skills/verify-tools/features/README.md b/.claude/skills/verify-tools/features/README.md index c16a73d1..1c280f77 100644 --- a/.claude/skills/verify-tools/features/README.md +++ b/.claude/skills/verify-tools/features/README.md @@ -32,12 +32,12 @@ that waste or invalidate a run, and how the result looked before the fix). - [Schema parser options](./schema-options.md): `missingResolverDataFetcherProvider` (`options`). - [Type extensions](./type-extensions.md): fields, interfaces, members, values and directives of every kind of extension, - the repeat and kind-mismatch warnings, repeated object and input fields, and sealed subclasses found through + the repeat errors and the kind-mismatch warning, repeated object and input fields, and sealed subclasses found through extensions (`type-extensions`, `type-extensions-repeated-fields`, `type-extensions-sealed`). -- [Proxied resolvers](./proxies.md): Spring JDK dynamic and CGLIB proxies, and the warning for fields a JDK proxy can't +- [Proxied resolvers](./proxies.md): Spring JDK dynamic and CGLIB proxies, and the build error for fields a JDK proxy can't call (`jdk-proxy`, `jdk-proxy-cglib`, `jdk-proxy-plain`). - [Context and environment parameters](./context-and-environment.md): `contextClass`, `GraphQLContext` and - `DataFetchingEnvironment` after the schema arguments, in any order, the misbound-argument warning, and resolver methods + `DataFetchingEnvironment` after the schema arguments, in any order, the misbound-argument error, and resolver methods without the source parameter (`context-and-environment`, `context-and-environment-invalid`, `context-misbound`, `sourceless`, `sourceless-shadowed`, `sourceless-unimplemented`, `sourceless-misbound`). diff --git a/.claude/skills/verify-tools/features/context-and-environment.md b/.claude/skills/verify-tools/features/context-and-environment.md index 24d43d6e..41266e4f 100644 --- a/.claude/skills/verify-tools/features/context-and-environment.md +++ b/.claude/skills/verify-tools/features/context-and-environment.md @@ -11,7 +11,7 @@ Any other trailing parameter type fails the build with "No method found". - `ctx-env-type-resolver` passes `graphql.GraphQLContext` and the environment to a `GraphQLResolver` method. - `ctx-env-single` keeps a single environment or a single context parameter working. - `ctx-env-invalid` rejects a trailing `String` parameter at build time. -- `ctx-env-misbound` warns at build when a schema argument lands on an environment or context parameter. +- `ctx-env-misbound` fails the build when a schema argument would land on an environment or context parameter. - `sourceless` binds a field resolver method that leaves out the source and takes only arguments, the environment or the context, when no method with the source and no property matches. @@ -25,13 +25,11 @@ Any other trailing parameter type fails the build with "No method found". `build-error.txt` starts with `graphql.kickstart.tools.resolver.FieldResolverError: No method found ... (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class scenarios.AppContext])`. -- **Misbound.** `run context-misbound`. Exit `0`. `probe.log` has 3 `SchemaClassScanner` WARNs, for `Query.users`, - `Query.contextArgument` and `User.thumbnail`, none for `Query.greeting`. The first reads `Field 'Query.users' has no - parameter for its argument 'first: Int' in scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment - parameter gets the argument instead.` All four operations have `errors=1`. `01` fails with `Parameter specified as - non-null is null`, `02` and `04` with ``Cannot construct instance of `graphql.schema.DataFetchingEnvironment` ``, and - `03-context-and-correct.json` has `data = {"contextArgument": null, "greeting": "greeting: hi ada"}` with one error, for - `/contextArgument`. Before #890 the same run has the same four errors and an empty `probe.log`. +- **Misbound.** `run context-misbound`. Exit `2`, no operations run, and `probe.log` is empty. `build-error.txt` starts + with `graphql.kickstart.tools.resolver.FieldResolverError: Field 'Query.users' has no parameter for its argument + 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment + parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment + parameter.` The build stops at that first field, so `Query.contextArgument` and `User.thumbnail` aren't named. - **Without the source.** - `run sourceless`: exit `0`, `errors=0` for both operations. In `01-local-context.json` each image has `imageBlob = "blob for [png, jpg]"` (`imageBlob(env)` reads the `localContext` that `images` returned), @@ -50,6 +48,12 @@ Any other trailing parameter type fails the build with "No method found". ## Gotchas +- Before #911 (commit 296ac4bf) `context-misbound` builds with exit `0` and all four operations have `errors=1`. `01` + fails with `Parameter specified as non-null is null`, `02` and `04` with + ``Cannot construct instance of `graphql.schema.DataFetchingEnvironment` ``, and `03-context-and-correct.json` has + `data = {"contextArgument": null, "greeting": "greeting: hi ada"}` with one error, for `/contextArgument`. From #890 on, + `probe.log` has 3 `SchemaClassScanner` WARNs, for `Query.users`, `Query.contextArgument` and `User.thumbnail`, none for + `Query.greeting`. Before it, `probe.log` is empty. - Before #888 only one trailing parameter was allowed, so `context-and-environment` fails to build on older versions with the same "No method found" error. - Before #904 `sourceless` fails the build (exit `2`) with `No method or field found ... imageBlob` and six listed diff --git a/.claude/skills/verify-tools/features/directives-and-relay.md b/.claude/skills/verify-tools/features/directives-and-relay.md index f7a92751..4e969c04 100644 --- a/.claude/skills/verify-tools/features/directives-and-relay.md +++ b/.claude/skills/verify-tools/features/directives-and-relay.md @@ -5,8 +5,8 @@ can wrap the data fetcher of every field that carries the directive. `@deprecate field marked `@connection(for: "Member")` gets its `MemberConnection`, `MemberConnectionEdge` and `PageInfo` types generated, so the SDL never declares them, and a resolver returning `graphql.relay.Connection` fills them. A wiring also runs on interfaces, unions, enums and input objects, including ones that refer to themselves or each other. -The build checks every applied directive against its definition. It logs a WARN with the source line for an invalid -application, and fails for a directive with no definition unless `allowUndeclaredDirectives(true)` is set. +The build checks every applied directive against its definition. It fails for an invalid application, listing each with +its source line, and for a directive with no definition unless `allowUndeclaredDirectives(true)` is set. ## Sub-features @@ -18,19 +18,19 @@ application, and fails for a directive with no definition unless `allowUndeclare - `dir-connection-paging` returns edges with cursors and `pageInfo` from `SimpleListConnection` for `first: 2`. - `dir-scalar` applies the directives of a scalar and its extension, runs `onScalar`, and reports `specifiedByURL` from the SDL `@specifiedBy` or else from the provided scalar (`scalar-directives`). -- `dir-scalar-undeclared` logs a WARN for an undeclared directive on a scalar and builds the scalar without it - (`scalar-directives`). +- `dir-scalar-undeclared` keeps an undeclared directive on a scalar in `appliedDirectives` when + `allowUndeclaredDirectives(true)` is set (`directive-drift`). - `dir-wiring-recursive` hands a wiring on a field of a self-referencing input object the built `GraphQLInputObjectType`, not a `GraphQLTypeReference` (`wiring-shapes`). - `dir-wiring-shapes` runs wirings on an interface, a union, an enum and a self-referencing object type, and lets a wiring make a self-referencing field non-null (`wiring-shapes`). -- `dir-applied-legacy` lists every applied directive, repeats and undeclared ones included, in `appliedDirectives`, and - only the declared ones in the legacy `directives`, keeping the first of a non-repeatable directive - (`directive-drift`). +- `dir-applied-legacy` lists every applied directive, undeclared ones included, in `appliedDirectives`, and only the + declared ones in the legacy `directives` (`directive-drift`). - `dir-undeclared-fails` fails the build for an applied directive with no definition unless `allowUndeclaredDirectives(true)` is set (`directive-drift-undeclared`). -- `dir-invalid-warn` logs a WARN with the source line and column for a directive applied where its definition doesn't - allow it, without a required argument, or twice when it isn't repeatable, and still builds (`directives-invalid`). +- `dir-invalid-fails` fails the build for a directive applied where its definition doesn't allow it, without a required + argument, or twice when it isn't repeatable, and lists every one with its source line and column + (`directives-invalid`). ## Expected results @@ -51,8 +51,7 @@ application, and fails for a directive with no definition unless `allowUndeclare `scalar Date @since(date : "2020-01-01") @unit(name : "day") @specifiedBy(url : "https://example.com/date")`, and `scalar DateTime @specifiedBy(url : "https://scalars.graphql.org/andimarek/date-time")`. In `01-introspect-scalars.json`, `Date` has `specifiedByURL: "https://example.com/date"` and `DateTime` has - `"https://scalars.graphql.org/andimarek/date-time"`. `probe.log` has exactly `Scalar 'Money' is built without its - directives from the schema: Found applied directive currency without corresponding directive definition.` + `"https://scalars.graphql.org/andimarek/date-time"`. `probe.log` is empty. - **Wirings on cycles.** `run wiring-shapes`. Exit `0`, `errors=0` for both operations and an empty `probe.log`. `schema.graphqls` has `"sees GraphQLInputObjectType TreeFilter"` on `TreeFilter.children`, `friend: Person! @required` and `state: State! @required` where the SDL declares both nullable, and `"described"` above `Named`, `Someone`, @@ -60,28 +59,24 @@ application, and fails for a directive with no definition unless `allowUndeclare `data.person = {"name": "ada", "friend": {"name": "ada"}, "state": "ALIVE", "someone": {"name": "ada"}}` and `data.someone = {"name": "grace"}`. - **Applied and legacy lists.** `run directive-drift`. Exit `0` and `schema build: OK`, with no operations. In - `inspect.txt`, `input field Meta.owner` has two `applied @once` (`reason` `"x"`, then `"because"`) and one `legacy @once` - with `reason = "x"`. `field Query.search` has two `applied @undeclared`, the first with arguments typed from their - literals (`i: Int`, `f: Float`, `b: Boolean`, `l: [Int]`), and no legacy one. `enum value Color.BLUE` has - `applied @deprecated` and `applied @undeclared` but only `legacy @deprecated`. -- **Drift warnings.** `probe.log` of `directive-drift` has 12 `SchemaParser` WARNs. Six are `isn't repeatable but is applied - more than once`, two are an extension of `Date` or `Query` applying `@once` again, two are `is missing its required - argument` (`@tag` and `@needs`), one is `Directive @fieldOnly at line 38, column 28 in - compat/scenarios/directive-drift/schema.graphqls is applied to ARGUMENT_DEFINITION, but it's declared on FIELD_DEFINITION.`, and - one is `Scalar 'Money' is built without its directives from the schema: Found an unexpected directive argument tag#nam .` - None names `@undeclared`, because `directive-drift` sets `allowUndeclaredDirectives(true)`. + `inspect.txt`, `field Query.search` has two `applied @undeclared`, the first with arguments typed from their literals + (`i: Int`, `f: Float`, `b: Boolean`, `l: [Int]`), then two `applied @tag`, and two `legacy @tag` but no legacy + `@undeclared`. `enum value Color.BLUE` has `applied @deprecated` and `applied @undeclared` but only + `legacy @deprecated`. `type Money` has one `applied @undeclared` with `code: String = literal "USD"` and no legacy + directive. `type Query` has `applied @tag` (`"query"`), then the extension's `@once` (`"extension"`), `@tag` and + `@undeclared`, and the same list without `@undeclared` as legacy. `probe.log` is empty. - **Undeclared.** `run directive-drift-undeclared`. Exit `2`. `summary.txt` has `schema build: FAILED graphql.kickstart.tools.SchemaError: Found applied directive undeclared without corresponding directive definition.`, and `build-error.txt` starts with the same message. -- **Invalid applications.** `run directives-invalid`. Exit `0` and `errors=0`. `01-query.json` has - `data.motto = "KEEP IT SIMPLE"`, so the misplaced `@uppercase` still wires. `probe.log` has exactly 5 `SchemaParser` - WARNs, each naming its line and column in `compat/scenarios/directives-invalid/schema.graphqls`. - `Directive @uppercase at line 12, column 20 ... is applied to FIELD_DEFINITION, but it's declared on OBJECT.` +- **Invalid applications.** `run directives-invalid`. Exit `2`, no operations run, and `probe.log` is empty. `summary.txt` + has `schema build: FAILED graphql.kickstart.tools.SchemaError:` followed by one line per invalid application, each + naming its line and column in `compat/scenarios/directives-invalid/schema.graphqls`, in this order. `Directive @deprecated at line 17, column 13 ... is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION.` + `Directive @uppercase at line 12, column 20 ... is applied to FIELD_DEFINITION, but it's declared on OBJECT.` `Directive @auth at line 13, column 20 ... is missing its required argument 'role'.` Two `Directive @cached at line ... isn't repeatable but is applied more than once`, at line 14, column 32 (the second - `@cached` on `members`) and line 9, column 15 (`extend schema`). + `@cached` on `members`) and line 9, column 15 (`extend schema`). `build-error.txt` starts with the same message. ## Gotchas @@ -96,4 +91,6 @@ application, and fails for a directive with no definition unless `allowUndeclare graphql-java versions. - Before #895 (commit 21f3796e) `wiring-shapes` has the same `schema.graphqls`, except that `TreeFilter.children` reads `"sees GraphQLTypeReference TreeFilter"`. -- Before #885 (commit 94a98a01) `directives-invalid` has an empty `probe.log` and the same `01-query.json`. +- Before #914 (commit 2114b149) `directives-invalid` builds with exit `0`, and `01-query.json` has + `data.motto = "KEEP IT SIMPLE"`, so the misplaced `@uppercase` still wires. From #885 (commit 94a98a01) on, `probe.log` + has the five messages as `SchemaParser` WARNs. Before it, `probe.log` is empty. diff --git a/.claude/skills/verify-tools/features/proxies.md b/.claude/skills/verify-tools/features/proxies.md index 529ebe69..f3a6c0f9 100644 --- a/.claude/skills/verify-tools/features/proxies.md +++ b/.claude/skills/verify-tools/features/proxies.md @@ -2,26 +2,27 @@ A resolver wrapped in a Spring AOP proxy is scanned as its target class through `Spring4AopProxyHandler`. A CGLIB proxy (`proxyTargetClass = true`) subclasses the target, so its methods work. A JDK dynamic proxy only implements the target's -interfaces, so every query of a field that resolves to the target's own method or field fails, and the build logs a -warning per field that suggests class-based proxies, plus a getter for a field. +interfaces, so it can't call a field that resolves to the target's own method or field. The build fails with a +`FieldResolverError` that names every such field and suggests class-based proxies, plus a getter for a field. ## Sub-features -- `proxy-jdk-warning` logs a WARN per field that a JDK proxy can't call, naming the type, field, member and proxy class. -- `proxy-jdk-field-getter` suggests adding a getter when the field resolves to a public field. -- `proxy-jdk-query` still fails each such field at query time. +- `proxy-jdk-fails` fails the build with one line per field that a JDK proxy can't call, naming the type, field, member + and proxy class, even for fields no operation queries. +- `proxy-jdk-field-getter` suggests adding a getter for a field that resolves to a public field. - `proxy-cglib` serves methods and getters through a CGLIB proxy with no warning, but a public field reads `0`. - `proxy-plain` serves the same resolver without a proxy and with no warning. ## Expected results -- **JDK proxy.** `run jdk-proxy`. Exit `0`. `probe.log` has three - `SchemaClassScanner` WARNs starting `Field 'Query.test'`, `Field 'Query.count'` and `Field 'Query.total'`. The - `count` one ends `Add a getter for the field and use class-based proxies, e.g. proxyTargetClass = true in Spring.`, the - other two end `Use class-based proxies instead, e.g. proxyTargetClass = true in Spring.` `01-query.json` has - `data = {"test": null, "count": null, "total": null}` and three errors, `object of type jdk.proxy2.$ProxyN is not an - instance of scenarios.ProxiedQuery` for `test` and `total`, and `Can not get final int field scenarios.ProxiedQuery.count` - for `count`. +- **JDK proxy.** `run jdk-proxy`. Exit `2`, no operations run, and `probe.log` is empty. `build-error.txt` starts with + `graphql.kickstart.tools.resolver.FieldResolverError: Field 'Query.test' resolves to + graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxy2.$ProxyN, which isn't a + graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail.`, followed by the same + line for `Field 'Query.count'` (`ProxiedQuery.count`) and `Field 'Query.total'` (`ProxiedQuery.getTotal`), and ends + `This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. + proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field + reads to the target.` - **CGLIB proxy.** `run jdk-proxy-cglib`. Exit `0`, empty `probe.log`, `01-query.json` has `data = {"test": "ok", "count": 0, "total": 2}`. - **No proxy.** `run jdk-proxy-plain`. Exit `0`, empty `probe.log`, @@ -29,7 +30,10 @@ warning per field that suggests class-based proxies, plus a getter for a field. ## Gotchas -- The warning shipped with #853. On a checkout without it, `jdk-proxy` has the same query errors and an empty `probe.log`. +- Before #913 (commit f4800425) `jdk-proxy` builds with exit `0`. `01-query.json` has + `data = {"test": null, "count": null, "total": null}` and three errors, `object of type jdk.proxy2.$ProxyN is not an + instance of scenarios.ProxiedQuery` for `test` and `total`, and `Can not get final int field scenarios.ProxiedQuery.count` + for `count`. From #853 on, `probe.log` has one `SchemaClassScanner` WARN per field. Before it, `probe.log` is empty. - The proxy number in `jdk.proxy2.$ProxyN` varies between runs. - CGLIB can't override `final` members, so the resolver and its members must be `open`. A final getter is called on the proxy itself and reads the proxy's empty field, like `count` does. diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt index 26ca21de..a70951e8 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/scenarios/DirectiveDrift.kt @@ -42,8 +42,6 @@ data class DriftMeta(val owner: String?) class DirectiveDriftQuery : GraphQLQueryResolver { fun plain() = "plain" - fun wrongPlace(arg: String?) = arg - fun missing() = "missing" fun old() = "old" fun older() = "older" fun search(filter: DriftMeta?, term: String?) = "${filter?.owner} $term" diff --git a/src/test/resources/compat/15.0.0/cases.tsv b/src/test/resources/compat/15.0.0/cases.tsv index 30ed641e..e191fc58 100644 --- a/src/test/resources/compat/15.0.0/cases.tsv +++ b/src/test/resources/compat/15.0.0/cases.tsv @@ -152,216 +152,207 @@ context-misbound kind extend scalar User @specifiedBy(url: "https://example.com" context-misbound undeclared extend type User @compatUndeclared FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. context-misbound repeat extend type User { name: String! } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. context-misbound location extend type User @specifiedBy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. -directive-drift seed SchemaError: Found an unexpected directive argument tag#nam . +directive-drift seed BUILT directive-drift proxy FieldResolverError: Field 'Query.plain' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.plain, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. -directive-drift kind extend type Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an interface. The extension is ignored. -directive-drift kind extend input Kind { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as an input object type. The extension is ignored. -directive-drift kind extend union Kind = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as a union. The extension is ignored. -directive-drift kind extend scalar Kind @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Kind' is defined as an enum, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend enum Kind @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend enum Kind { PLAIN } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Kind @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend enum Kind @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Kind @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Kind @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Kind @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Kind @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Kind @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend interface Query { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -directive-drift kind extend input Query { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Query { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -directive-drift kind extend union Query = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. -directive-drift kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend type Query @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend type Query { plain: String @tag(name: "plain", level: 2) @once(reason: "supplied") @fieldOnly @argDoc(note: "x") } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Query @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend type Query @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Query @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Query @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Query @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Query @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Query @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Animal { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. -directive-drift kind extend input Animal { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Animal { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. -directive-drift kind extend union Animal = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as a union. The extension is ignored. -directive-drift kind extend scalar Animal @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend interface Animal @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend interface Animal { name: String @once @once } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend interface Animal @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend interface Animal @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend interface Animal @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend interface Animal @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend interface Animal @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend interface Animal @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend interface Animal @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend interface Dog { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. -directive-drift kind extend input Dog { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Dog { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. -directive-drift kind extend scalar Dog @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend type Dog @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend type Dog { name: String } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend type Dog @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend type Dog @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Dog @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Dog @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Dog @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Dog @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend type Dog @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. -directive-drift kind extend input Pet { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Pet { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as an enum. The extension is ignored. -directive-drift kind extend scalar Pet @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend union Pet @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend union Pet = Dog SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend union Pet @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend union Pet @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend union Pet @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend union Pet @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend union Pet @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend union Pet @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend union Pet @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. -directive-drift kind extend input Color { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. -directive-drift kind extend union Color = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as a union. The extension is ignored. -directive-drift kind extend scalar Color @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend enum Color @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend enum Color { RED } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend enum Color @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend enum Color @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Color @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Color @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Color @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Color @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend enum Color @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Meta { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Meta { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an interface. The extension is ignored. -directive-drift kind extend enum Meta { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as an enum. The extension is ignored. -directive-drift kind extend union Meta = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as a union. The extension is ignored. -directive-drift kind extend scalar Meta @specifiedBy(url: "https://example.com") SchemaError: Found an unexpected directive argument tag#nam . Type 'Meta' is defined as an input object type, but extended as a scalar. The extension is ignored. -directive-drift undeclared extend input Meta @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat extend input Meta { owner: String @once(reason: "x") @once } SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend input Meta @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend input Meta @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend input Meta @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend input Meta @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend input Meta @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend input Meta @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend input Meta @specifiedBy SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. -directive-drift kind extend input Date { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Date { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. -directive-drift kind extend union Date = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. -directive-drift undeclared extend scalar Date @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend scalar Date @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Date @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Date @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Date @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Date @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @specifiedBy(url: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Date @specifiedBy(url: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift kind extend type Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. -directive-drift kind extend interface Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. -directive-drift kind extend input Money { compatZ: String } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. -directive-drift kind extend enum Money { COMPAT_Z } SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. -directive-drift kind extend union Money = Dog SchemaError: Found an unexpected directive argument tag#nam . Type 'Money' is defined as a scalar, but extended as a union. The extension is ignored. -directive-drift undeclared extend scalar Money @compatUndeclared SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(name: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(name: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(name: null) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(level: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(kind: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(kind: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(meta: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @tag(meta: "x") SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @once(reason: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @once(reason: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift repeat-directive extend scalar Money @once @once SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Money @link SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Money @argDoc SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Money @fieldOnly SchemaError: Found an unexpected directive argument tag#nam . -directive-drift location extend scalar Money @needs SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @specifiedBy(url: 5) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @specifiedBy(url: NOPE) SchemaError: Found an unexpected directive argument tag#nam . -directive-drift argval extend scalar Money @specifiedBy(url: null) SchemaError: Found an unexpected directive argument tag#nam . +directive-drift kind extend type Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an interface. The extension is ignored. +directive-drift kind extend input Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an input object type. The extension is ignored. +directive-drift kind extend union Kind = Dog BUILT Type 'Kind' is defined as an enum, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Kind @specifiedBy(url: "https://example.com") BUILT Type 'Kind' is defined as an enum, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend enum Kind @compatUndeclared BUILT +directive-drift repeat extend enum Kind { PLAIN } SchemaError: Type 'Kind' declares value 'PLAIN' more than once at line 1, column 20. +directive-drift argval extend enum Kind @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @tag(level: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend enum Kind @tag(kind: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend enum Kind @tag(kind: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend enum Kind @tag(meta: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend enum Kind @tag(meta: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend enum Kind @once(reason: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift repeat-directive extend enum Kind @once @once SchemaError: Directive @once at line 1, column 24 isn't repeatable but is applied more than once. +directive-drift location extend enum Kind @link SchemaError: Directive @link at line 1, column 18 is applied to ENUM, but it's declared on SCHEMA. +directive-drift location extend enum Kind @argDoc SchemaError: Directive @argDoc at line 1, column 18 is applied to ENUM, but it's declared on FIELD_DEFINITION. +directive-drift location extend enum Kind @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 18 is applied to ENUM, but it's declared on FIELD_DEFINITION. +directive-drift location extend enum Kind @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to ENUM, but it's declared on SCALAR. +directive-drift kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directive-drift kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directive-drift kind extend union Query = Dog BUILT Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend type Query @compatUndeclared BUILT +directive-drift repeat extend type Query { plain: String @tag(name: "plain", level: 2) @once(reason: "supplied") @fieldOnly @argDoc(note: "x") } SchemaError: Type 'Query' declares field 'plain' more than once at line 1, column 21. +directive-drift argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend type Query @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend type Query @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend type Query @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend type Query @tag(meta: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend type Query @tag(meta: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend type Query @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift argval extend type Query @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend type Query @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift location extend type Query @link SchemaError: Directive @link at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. +directive-drift location extend type Query @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend type Query @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +directive-drift kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. +directive-drift kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. +directive-drift kind extend union Animal = Dog BUILT Type 'Animal' is defined as an interface, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend interface Animal @compatUndeclared BUILT +directive-drift repeat extend interface Animal { name: String @once } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. +directive-drift argval extend interface Animal @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend interface Animal @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend interface Animal @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend interface Animal @tag(level: "x") SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. +directive-drift argval extend interface Animal @tag(kind: 5) SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. +directive-drift argval extend interface Animal @tag(kind: "x") SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. +directive-drift argval extend interface Animal @tag(meta: 5) SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. +directive-drift argval extend interface Animal @tag(meta: "x") SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. +directive-drift argval extend interface Animal @once(reason: 5) SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. +directive-drift argval extend interface Animal @once(reason: NOPE) SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend interface Animal @once @once SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. +directive-drift location extend interface Animal @link SchemaError: Directive @link at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. +directive-drift location extend interface Animal @argDoc SchemaError: Directive @argDoc at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. +directive-drift location extend interface Animal @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. +directive-drift location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +directive-drift kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. +directive-drift kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. +directive-drift kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend type Dog @compatUndeclared BUILT +directive-drift repeat extend type Dog { name: String } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. +directive-drift argval extend type Dog @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @tag(level: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. +directive-drift argval extend type Dog @tag(kind: 5) SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. +directive-drift argval extend type Dog @tag(kind: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. +directive-drift argval extend type Dog @tag(meta: 5) SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. +directive-drift argval extend type Dog @tag(meta: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. +directive-drift argval extend type Dog @once(reason: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift repeat-directive extend type Dog @once @once SchemaError: Directive @once at line 1, column 23 isn't repeatable but is applied more than once. +directive-drift location extend type Dog @link SchemaError: Directive @link at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. +directive-drift location extend type Dog @argDoc SchemaError: Directive @argDoc at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend type Dog @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +directive-drift kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. +directive-drift kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is defined as a union, but extended as an enum. The extension is ignored. +directive-drift kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend union Pet @compatUndeclared BUILT +directive-drift repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. +directive-drift argval extend union Pet @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend union Pet @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend union Pet @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend union Pet @tag(level: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend union Pet @tag(kind: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend union Pet @tag(kind: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend union Pet @tag(meta: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend union Pet @tag(meta: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. +directive-drift argval extend union Pet @once(reason: 5) SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. +directive-drift argval extend union Pet @once(reason: NOPE) SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend union Pet @once @once SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. +directive-drift location extend union Pet @link SchemaError: Directive @link at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. +directive-drift location extend union Pet @argDoc SchemaError: Directive @argDoc at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. +directive-drift location extend union Pet @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. +directive-drift location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +directive-drift kind extend type Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. +directive-drift kind extend input Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. +directive-drift kind extend union Color = Dog BUILT Type 'Color' is defined as an enum, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Color @specifiedBy(url: "https://example.com") BUILT Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend enum Color @compatUndeclared BUILT +directive-drift repeat extend enum Color { RED } SchemaError: Type 'Color' declares value 'RED' more than once at line 1, column 21. +directive-drift argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Color @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend enum Color @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend enum Color @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend enum Color @tag(meta: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend enum Color @tag(meta: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend enum Color @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift argval extend enum Color @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend enum Color @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift location extend enum Color @link SchemaError: Directive @link at line 1, column 19 is applied to ENUM, but it's declared on SCHEMA. +directive-drift location extend enum Color @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. +directive-drift location extend enum Color @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. +directive-drift location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. +directive-drift kind extend type Meta { compatZ: String } BUILT Type 'Meta' is defined as an input object type, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Meta { compatZ: String } BUILT Type 'Meta' is defined as an input object type, but extended as an interface. The extension is ignored. +directive-drift kind extend enum Meta { COMPAT_Z } BUILT Type 'Meta' is defined as an input object type, but extended as an enum. The extension is ignored. +directive-drift kind extend union Meta = Dog BUILT Type 'Meta' is defined as an input object type, but extended as a union. The extension is ignored. +directive-drift kind extend scalar Meta @specifiedBy(url: "https://example.com") BUILT Type 'Meta' is defined as an input object type, but extended as a scalar. The extension is ignored. +directive-drift undeclared extend input Meta @compatUndeclared BUILT +directive-drift repeat extend input Meta { owner: String @once(reason: "x") } SchemaError: Type 'Meta' declares field 'owner' more than once at line 1, column 21. +directive-drift argval extend input Meta @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend input Meta @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend input Meta @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend input Meta @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend input Meta @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend input Meta @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend input Meta @tag(meta: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend input Meta @tag(meta: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. +directive-drift argval extend input Meta @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift argval extend input Meta @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend input Meta @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. +directive-drift location extend input Meta @link SchemaError: Directive @link at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCHEMA. +directive-drift location extend input Meta @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend input Meta @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. +directive-drift location extend input Meta @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCALAR. +directive-drift kind extend type Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +directive-drift kind extend input Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Date { COMPAT_Z } BUILT Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +directive-drift kind extend union Date = Dog BUILT Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. +directive-drift undeclared extend scalar Date @compatUndeclared BUILT +directive-drift argval extend scalar Date @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Date @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Date @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Date @tag(level: "x") SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. +directive-drift argval extend scalar Date @tag(kind: 5) SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. +directive-drift argval extend scalar Date @tag(kind: "x") SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. +directive-drift argval extend scalar Date @tag(meta: 5) SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. +directive-drift argval extend scalar Date @tag(meta: "x") SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. +directive-drift argval extend scalar Date @once(reason: 5) SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift argval extend scalar Date @once(reason: NOPE) SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift repeat-directive extend scalar Date @once @once SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift location extend scalar Date @link SchemaError: Directive @link at line 1, column 20 is applied to SCALAR, but it's declared on SCHEMA. +directive-drift location extend scalar Date @argDoc SchemaError: Directive @argDoc at line 1, column 20 is applied to SCALAR, but it's declared on FIELD_DEFINITION. +directive-drift location extend scalar Date @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 20 is applied to SCALAR, but it's declared on FIELD_DEFINITION. +directive-drift argval extend scalar Date @specifiedBy(url: 5) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift argval extend scalar Date @specifiedBy(url: null) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +directive-drift kind extend type Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. +directive-drift kind extend interface Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. +directive-drift kind extend input Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. +directive-drift kind extend enum Money { COMPAT_Z } BUILT Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. +directive-drift kind extend union Money = Dog BUILT Type 'Money' is defined as a scalar, but extended as a union. The extension is ignored. +directive-drift undeclared extend scalar Money @compatUndeclared BUILT +directive-drift argval extend scalar Money @tag(name: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @tag(name: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @tag(level: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. +directive-drift argval extend scalar Money @tag(kind: 5) SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. +directive-drift argval extend scalar Money @tag(kind: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. +directive-drift argval extend scalar Money @tag(meta: 5) SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. +directive-drift argval extend scalar Money @tag(meta: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. +directive-drift argval extend scalar Money @once(reason: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift repeat-directive extend scalar Money @once @once SchemaError: Directive @once at line 1, column 27 isn't repeatable but is applied more than once. +directive-drift location extend scalar Money @link SchemaError: Directive @link at line 1, column 21 is applied to SCALAR, but it's declared on SCHEMA. +directive-drift location extend scalar Money @argDoc SchemaError: Directive @argDoc at line 1, column 21 is applied to SCALAR, but it's declared on FIELD_DEFINITION. +directive-drift location extend scalar Money @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 21 is applied to SCALAR, but it's declared on FIELD_DEFINITION. +directive-drift argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: directive-drift-undeclared seed SchemaError: Found applied directive undeclared without corresponding directive definition. directive-drift-undeclared proxy FieldResolverError: Field 'Query.a' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField.a, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField, so every query of the field will fail. directive-drift-undeclared kind extend interface Query { compatZ: String } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. @@ -930,59 +921,59 @@ scalar-args kind extend scalar MarkedTokensInput @specifiedBy(url: "https://exam scalar-args undeclared extend input MarkedTokensInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. scalar-args repeat extend input MarkedTokensInput { typed: TypedToken } SchemaError: Type 'MarkedTokensInput' declares field 'typed' more than once at line 1, column 34. scalar-args location extend input MarkedTokensInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 32 is applied to INPUT_OBJECT, but it's declared on SCALAR. -scalar-directives seed SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives seed BUILT scalar-directives proxy FieldResolverError: Field 'Query.today' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.today, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. -scalar-directives kind extend type Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. -scalar-directives kind extend interface Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. -scalar-directives kind extend input Date { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. -scalar-directives kind extend enum Date { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives kind extend type Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Date { COMPAT_Z } BUILT Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-directives undeclared extend scalar Date @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-directives argval extend scalar Date @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives repeat-directive extend scalar Date @since @since SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Date @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives kind extend type DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an object type. The extension is ignored. -scalar-directives kind extend interface DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an interface. The extension is ignored. -scalar-directives kind extend input DateTime { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. -scalar-directives kind extend enum DateTime { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives argval extend scalar Date @since(date: 5) SchemaError: Directive @since at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @since(date: "x") SchemaError: Directive @since at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives repeat-directive extend scalar Date @since @since SchemaError: Directive @since at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @unit(name: 5) SchemaError: Directive @unit at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @unit(name: NOPE) SchemaError: Directive @unit at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @unit(name: null) SchemaError: Directive @unit at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @specifiedBy(url: 5) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @specifiedBy(url: NOPE) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Date @specifiedBy(url: null) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. +scalar-directives kind extend type DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum DateTime { COMPAT_Z } BUILT Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-directives undeclared extend scalar DateTime @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-directives argval extend scalar DateTime @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives repeat-directive extend scalar DateTime @since @since SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar DateTime @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives kind extend type Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. -scalar-directives kind extend interface Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. -scalar-directives kind extend input Money { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. -scalar-directives kind extend enum Money { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. -scalar-directives undeclared extend scalar Money @compatUndeclared SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @since(date: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @since(date: "x") SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives repeat-directive extend scalar Money @since @since SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @unit(name: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @unit(name: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @unit(name: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @specifiedBy(url: 5) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @specifiedBy(url: NOPE) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives argval extend scalar Money @specifiedBy(url: null) SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives kind extend interface Query { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -scalar-directives kind extend input Query { compatZ: String } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -scalar-directives kind extend enum Query { COMPAT_Z } SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -scalar-directives kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Found applied directive currency without corresponding directive definition. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -scalar-directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives repeat extend type Query { today: Date @since(date: "2021-01-01") } SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives location extend type Query @since SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives location extend type Query @unit SchemaError: Found applied directive currency without corresponding directive definition. -scalar-directives location extend type Query @specifiedBy SchemaError: Found applied directive currency without corresponding directive definition. +scalar-directives argval extend scalar DateTime @since(date: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @since(date: "x") BUILT +scalar-directives repeat-directive extend scalar DateTime @since @since SchemaError: Directive @since at line 1, column 31 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar DateTime @unit(name: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @unit(name: NOPE) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @unit(name: null) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-directives kind extend type Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. +scalar-directives kind extend interface Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Money { COMPAT_Z } BUILT Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. +scalar-directives undeclared extend scalar Money @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-directives argval extend scalar Money @since(date: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @since(date: "x") BUILT +scalar-directives repeat-directive extend scalar Money @since @since SchemaError: Directive @since at line 1, column 28 isn't repeatable but is applied more than once. +scalar-directives argval extend scalar Money @unit(name: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @unit(name: NOPE) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @unit(name: null) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-directives kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +scalar-directives kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +scalar-directives kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +scalar-directives kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +scalar-directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. +scalar-directives repeat extend type Query { today: Date @since(date: "2021-01-01") } SchemaError: Type 'Query' declares field 'today' more than once at line 1, column 21. +scalar-directives location extend type Query @since SchemaError: Directive @since at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR | FIELD_DEFINITION. +scalar-directives location extend type Query @unit SchemaError: Directive @unit at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +scalar-directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. sourceless seed BUILT sourceless proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. sourceless kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. diff --git a/src/test/resources/compat/scenarios/directive-drift/schema.graphqls b/src/test/resources/compat/scenarios/directive-drift/schema.graphqls index 85f2f1e5..eb4657e9 100644 --- a/src/test/resources/compat/scenarios/directive-drift/schema.graphqls +++ b/src/test/resources/compat/scenarios/directive-drift/schema.graphqls @@ -24,24 +24,20 @@ directive @argDoc(note: String @once @tag(name: "on a directive argument")) on F directive @fieldOnly on FIELD_DEFINITION -directive @needs(value: String!) on FIELD_DEFINITION - enum Kind { PLAIN LOUD } -type Query @tag(name: "query") @once @once { +type Query @tag(name: "query") { plain: String # described by a comment @tag(name: "plain", level: 2) @once(reason: "supplied") @fieldOnly @argDoc(note: "x") - wrongPlace(arg: String @fieldOnly): String - missing: String @needs old: String @deprecated older: String @deprecated(reason: "use plain") search( filter: Meta @tag(name: "arg", kind: LOUD, meta: {owner: "me"}) - term: String @once @once + term: String @once ): String @undeclared(s: "x", i: 1, f: 1.5, b: true, n: null, l: [1, 2], e: []) @undeclared(s: "again") @tag(name: "a") @tag(name: "b") animal: Animal pet: Pet @@ -53,27 +49,27 @@ type Query @tag(name: "query") @once @once { extend type Query @once(reason: "extension") @tag(name: "extension") @undeclared interface Animal @tag(name: "animal") @once { - name: String @once @once + name: String @once } type Dog implements Animal { name: String } -union Pet @tag(name: "pet") @once @once = Dog +union Pet @tag(name: "pet") @once = Dog enum Color @once { - RED @tag(name: "red") @once @once + RED @tag(name: "red") @once GREEN @deprecated BLUE @deprecated(reason: "too blue") @undeclared(why: "blue") } input Meta @tag(name: "input") @once { - owner: String @once(reason: "x") @once + owner: String @once(reason: "x") } "A date" -scalar Date @tag(name: "date") @specifiedBy(url: "https://example.com/date") @once +scalar Date @tag(name: "date") @specifiedBy(url: "https://example.com/date") extend scalar Date @once(reason: "extension") @tag(name: "extension") -scalar Money @tag(nam: "typo") +scalar Money @undeclared(code: "USD") diff --git a/src/test/resources/compat/scenarios/scalar-directives/schema.graphqls b/src/test/resources/compat/scenarios/scalar-directives/schema.graphqls index 48bba21e..87ba3a39 100644 --- a/src/test/resources/compat/scenarios/scalar-directives/schema.graphqls +++ b/src/test/resources/compat/scenarios/scalar-directives/schema.graphqls @@ -7,7 +7,7 @@ extend scalar Date @since(date: "2020-01-01") @unit(name: "day") scalar DateTime -scalar Money @currency(code: "USD") +scalar Money type Query { today: Date @since(date: "2021-01-01") From beeafe5cae0eab819c24bc92a6607da762ae8f4e Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 14:56:18 -0500 Subject: [PATCH 07/12] State the exit code of type-extensions-sealed --- .claude/skills/verify-tools/features/type-extensions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/verify-tools/features/type-extensions.md b/.claude/skills/verify-tools/features/type-extensions.md index f8ff2d25..c6300561 100644 --- a/.claude/skills/verify-tools/features/type-extensions.md +++ b/.claude/skills/verify-tools/features/type-extensions.md @@ -39,7 +39,7 @@ ignored with a WARN. A union, enum, interface or scalar that only has extensions - **Repeated fields.** `run type-extensions-repeated-fields`. Exit `2`, and `summary.txt` has `schema build: FAILED graphql.kickstart.tools.SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls.` -- **Sealed.** `run type-extensions-sealed`. `01-pets-and-animals.json` has +- **Sealed.** `run type-extensions-sealed`. Exit `0`. `01-pets-and-animals.json` has `pets = [{"__typename": "Dog", "name": "Rex"}, {"__typename": "Cat", "lives": 9}]` and `animals` with a `Cow` and a `Horse`, with no WARN in `probe.log`. From 67a6399f22f61b01798180c22ccb421162f19ce6 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 15:22:09 -0500 Subject: [PATCH 08/12] Make CompatTest hard to pass by accident An accepted.txt line is now a literal case name, or a regex only when it starts with re:, and needs a reason that names an issue or release notes. A line that matches no failing case fails, and so does an empty capture, an empty scenario list, or a case that built on the release and isn't generated any more. In major mode a release WARN excuses a break only when it names the case's type and item, or the position of the directive the case applies. Errors keep their full message, so an InvalidSchemaException lists its reasons. The 15.0.0 capture is retaken for the longer error text; its cases, WARNs and built count are unchanged. --- .../kickstart/tools/compat/CompatTest.kt | 118 ++- .../kickstart/tools/compat/Variants.kt | 61 +- src/test/resources/compat/15.0.0/cases.tsv | 746 +++++++++--------- 3 files changed, 499 insertions(+), 426 deletions(-) diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index bc0e5927..4611de5e 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -14,7 +14,13 @@ import java.io.File class CompatTest { @Test fun `cases that built on the last release still build`() { - val outcomes = runAll() + // the tests run in the library's module, which neither reads logback's nor exports the scenarios to kotlin-reflect + val module = CompatTest::class.java.module + listOf("ch.qos.logback.classic", "ch.qos.logback.core").forEach { ModuleLayer.boot().findModule(it).ifPresent(module::addReads) } + ModuleLayer.boot().findModule("kotlin.reflect").ifPresent { module.addExports(Scenario::class.java.packageName, it) } + if (SCENARIOS.isEmpty()) return fail("No scenarios in ${Scenario::class.java.packageName}, so nothing is checked.") + val variants = SCENARIOS.flatMap(::variants) + val outcomes = runAll(variants) val version = pomVersion() if (System.getProperty("compat.capture") != null) { val dir = File(CAPTURES, version.toString()).apply { mkdirs() } @@ -27,44 +33,60 @@ class CompatTest { .filter { it.first <= version }.maxByOrNull { it.first } ?: return fail("No capture in $CAPTURES at or below $version. Capture the last release as AGENTS.md describes under Releases.") val released = read(File(dir, "cases.tsv")) + if (released.isEmpty()) return fail("$dir/cases.tsv is empty, so nothing is checked. Capture $release as AGENTS.md describes under Releases.") val acceptedFile = File(dir, "accepted.txt") - val accepted = acceptedFile.readLines().filter { it.isNotBlank() }.map { Regex(it.substringBefore('\t')) } + val accepted = readAccepted(acceptedFile) val major = version.major > release.major + val warnNames = variants.associate { it.key to it.warnNames } fun builtWithItsSeedOnRelease(key: CaseKey) = released[key.seed]?.built == true && released.getValue(key).built fun repeatsSeedBreak(key: CaseKey) = key != key.seed && outcomes[key.seed]?.error == outcomes.getValue(key).error - fun warnedOnRelease(key: CaseKey) = - (released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet()).isNotEmpty() + fun warnedOnRelease(key: CaseKey): Boolean { + val ownWarnings = released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet() + val names = warnNames.getValue(key).ifEmpty { namesIn(outcomes.getValue(key).error!!) } + return ownWarnings.any { warning -> names.all { alternatives -> alternatives.any { warning.names(it) } } } + } + fun isAccepted(key: CaseKey) = accepted.any { it.matches(key) } - val broke = released.keys.filter { builtWithItsSeedOnRelease(it) && outcomes[it]?.built == false } - .filterNot(::repeatsSeedBreak) - .filterNot { key -> accepted.any { it.containsMatchIn(key.toString()) } } - .filterNot { major && warnedOnRelease(it) } - if (broke.isEmpty()) return + val protected = released.keys.filter(::builtWithItsSeedOnRelease) + val missing = protected.filterNot(outcomes::containsKey) + val broken = protected.filter { outcomes[it]?.built == false }.filterNot(::repeatsSeedBreak) + val stale = accepted.filter { entry -> (missing + broken).none(entry::matches) } + val broke = broken.filterNot(::isAccepted).filterNot { major && warnedOnRelease(it) } + val gone = missing.filterNot(::isAccepted) + if (broke.isEmpty() && gone.isEmpty() && stale.isEmpty()) return val target = "${release.major + 1}.0.0" - val cases = broke.take(SHOWN).joinToString("\n") { " $it\n ${outcomes.getValue(it).error}" } + - if (broke.size > SHOWN) "\n and ${broke.size - SHOWN} more" else "" - val byOperator = broke.groupingBy { it.operator }.eachCount().toSortedMap() - val deliberate = "A deliberate break that the release notes list goes into $acceptedFile as a regex for the case, a tab, and the issue." - fail( - if (major) { - """ - |${broke.size} cases built on $release with no WARN of their own and throw now $byOperator. + val accept = "add a line to $acceptedFile with the case as listed here, a tab, and why, naming its issue (#N) or the release " + + "notes (\"X.Y.Z release notes\"). Start the case with $PATTERN to give a regex instead." + val deliberate = "For a deliberate break that the release notes list, $accept" + val brokeReport = when { + broke.isEmpty() -> null + major -> """ + |${broke.size} cases built on $release with no WARN that names them and throw now ${byOperator(broke)}. |A major may reject only input that the last minor warned about. Log a WARN that names the type and the item in a |${release.major}.x release first. $deliberate - |$cases + |${list(broke) { outcomes.getValue(it).error!! }} """.trimMargin() - } else { - """ - |${broke.size} cases built on $release and throw now $byOperator. + else -> """ + |${broke.size} cases built on $release and throw now ${byOperator(broke)}. |Invalid input that built on the last release keeps building until the next major (AGENTS.md, Compatibility). |Instead of throwing, log a WARN that names the type and the item, open a GitHub issue with $target in its title, |and leave `// TODO in $target (#N)`. $deliberate - |$cases + |${list(broke) { outcomes.getValue(it).error!! }} """.trimMargin() - } - ) + } + val goneReport = if (gone.isEmpty()) null else """ + |${gone.size} cases built on $release and aren't generated any more ${byOperator(gone)}, so nothing checks them. + |A scenario was renamed, removed, or its SDL changed. If that was deliberate, capture $release again with the scenarios + |you have: `git checkout v$release -- pom.xml src/main`, `mvn -B -ntp clean test -Dtest=CompatTest -Dcompat.capture`, + |then `git checkout HEAD -- pom.xml src/main`. Otherwise $accept + |${list(gone)} + """.trimMargin() + val staleReport = if (stale.isEmpty()) null else + "Lines in $acceptedFile that match no case that throws or is gone. Delete each one whose case builds again:\n" + + stale.joinToString("\n") { " line ${it.line}: ${it.case}" } + fail(listOfNotNull(brokeReport, goneReport, staleReport).joinToString("\n\n")) } } @@ -72,26 +94,59 @@ class Outcome(val error: String?, val warnings: List) { val built get() = error == null } +private class Accepted(val line: Int, val case: String) { + private val pattern = if (case.startsWith(PATTERN)) Regex(case.removePrefix(PATTERN)) else null + + fun matches(key: CaseKey) = pattern?.matches(key.toString()) ?: (case == key.toString()) +} + private val CAPTURES = File("src/test/resources/compat") private const val SHOWN = 50 +private const val PATTERN = "re:" +private val REFERENCE = Regex("#\\d+|\\d+\\.\\d+\\.\\d+ release notes") + +private fun readAccepted(file: File): List { + val problems = mutableListOf() + val accepted = file.readLines().withIndex().filter { it.value.isNotBlank() }.mapNotNull { (index, text) -> + val case = text.substringBefore('\t') + val reason = text.substringAfter('\t', "") + val problem = when { + !REFERENCE.containsMatchIn(reason) -> "needs a tab and a reason that names an issue (#N) or the release notes (\"X.Y.Z release notes\")" + case.startsWith(PATTERN) && runCatching { Regex(case.removePrefix(PATTERN)) }.isFailure -> "starts with $PATTERN but isn't a valid regex" + else -> null + } + problem?.let { problems += " line ${index + 1} $it: $text" } + if (problem == null) Accepted(index + 1, case) else null + } + if (problems.isNotEmpty()) fail("$file has lines the check can't use:\n${problems.joinToString("\n")}") + return accepted +} + +private fun byOperator(keys: List) = keys.groupingBy { it.operator }.eachCount().toSortedMap() + +private fun list(keys: List, detail: (CaseKey) -> String? = { null }) = + keys.take(SHOWN).joinToString("\n") { key -> " $key" + detail(key)?.let { "\n $it" }.orEmpty() } + + if (keys.size > SHOWN) "\n and ${keys.size - SHOWN} more" else "" + +// an error without a snippet to name the type and item names them itself, in quotes, or not at all +private fun namesIn(error: String): List> = + Regex("(? { - // the tests run in the library's module, which neither reads logback's nor exports the scenarios to kotlin-reflect - val module = CompatTest::class.java.module - listOf("ch.qos.logback.classic", "ch.qos.logback.core").forEach { ModuleLayer.boot().findModule(it).ifPresent(module::addReads) } - ModuleLayer.boot().findModule("kotlin.reflect").ifPresent { module.addExports(Scenario::class.java.packageName, it) } +private fun runAll(variants: List): Map { val logger = LoggerFactory.getLogger("graphql.kickstart.tools") as Logger val appender = ListAppender().apply { start() } logger.addAppender(appender) logger.isAdditive = false try { - return SCENARIOS.flatMap(::variants).associate { variant -> + return variants.associate { variant -> appender.list.clear() val error = try { variant.build() null } catch (e: Throwable) { - "${e.javaClass.simpleName}: ${normalize(e.message.orEmpty().lineSequence().first())}" + "${e.javaClass.simpleName}: ${normalize(e.message.orEmpty())}" } val warnings = appender.list.filter { it.level.isGreaterOrEqual(Level.WARN) }.map { normalize(it.formattedMessage) }.sorted() variant.key to Outcome(error, warnings) @@ -104,6 +159,7 @@ private fun runAll(): Map { private fun normalize(message: String) = message .replace(Regex("\\s+"), " ") + .trim() .replace(Regex("jdk\\.proxy\\d+\\.\\\$Proxy\\d+"), "jdk.proxyN.\\\$ProxyN") .replace(Regex("\\\$\\\$SpringCGLIB\\\$\\\$\\d+"), "\\\$\\\$SpringCGLIB\\\$\\\$N") .replace(Regex("@[0-9a-f]{5,}"), "@HASH") diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt index 06ca1d27..2930a9a2 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt @@ -25,18 +25,26 @@ data class CaseKey(val scenario: String, val operator: String, val snippet: Stri override fun toString() = listOf(scenario, operator, snippet).filter { it.isNotEmpty() }.joinToString(" | ") } -class Variant(val key: CaseKey, val build: () -> Unit) +/** + * [warnNames] is what a release's WARN has to name to count as a warning about this case: one name out of each set. Seed + * and proxy cases have none, because only their error says what broke. + */ +class Variant(val key: CaseKey, val warnNames: List>, val build: () -> Unit) fun variants(scenario: Scenario): List { - fun variant(operator: String, snippet: String = "", resolvers: () -> List> = { scenario.resolvers }) = - Variant(CaseKey(scenario.name, operator, snippet)) { - val builder = scenario.parser(resolvers()) - if (snippet.isNotEmpty()) builder.schemaString(snippet) - scenario.schema(builder.build()) - } + fun variant( + operator: String, + snippet: String = "", + warnNames: List> = emptyList(), + resolvers: () -> List> = { scenario.resolvers } + ) = Variant(CaseKey(scenario.name, operator, snippet), warnNames) { + val builder = scenario.parser(resolvers()) + if (snippet.isNotEmpty()) builder.schemaString(snippet) + scenario.schema(builder.build()) + } return listOf(variant("seed"), variant("proxy") { scenario.resolvers.map { ProxyFactory(it).proxy as GraphQLResolver<*> } }) + - snippets(scenario).map { (operator, snippet) -> variant(operator, snippet) } + snippets(scenario).map { (key, warnNames) -> variant(key.first, key.second, warnNames) } } private val KINDS: Map, String> = mapOf( @@ -52,50 +60,59 @@ private val LOCATIONS = mapOf("type" to "OBJECT", "interface" to "INTERFACE", "i private val SPECIFIED_BY = Parser().parseDocument("directive @specifiedBy(url: String!) on SCALAR").definitions.single() as DirectiveDefinition -private fun snippets(scenario: Scenario): Set> { +private fun snippets(scenario: Scenario): Map, List>> { val sdl = scenario.files.joinToString("\n") { Scenario::class.java.classLoader.getResource(it)!!.readText() } val definitions = Parser().parseDocument(sdl).definitions val types = definitions.filterIsInstance>().filter { it.javaClass in KINDS } val directives = definitions.filterIsInstance() + SPECIFIED_BY val objectNames = types.filterIsInstance().map { it.name } - setOf("Query", "Mutation", "Subscription") - val snippets = LinkedHashSet>() + val snippets = LinkedHashMap, List>>() for (type in types) { val kind = KINDS.getValue(type.javaClass) + fun add(operator: String, snippet: String, vararg warnNames: Set) = snippets.putIfAbsent(operator to snippet, warnNames.toList()) + // a WARN about a directive in an extension may point at the application instead of naming the type + fun addDirective(operator: String, directive: String, applications: String) { + val snippet = "extend $kind ${type.name} $applications" + val positions = Regex("@$directive\\b").findAll(snippet).map { "line 1, column ${it.range.first + 1}" } + add(operator, snippet, setOf(directive), setOf(type.name) + positions) + } + for (other in KINDS.values - kind) { when (other) { "enum" -> "extend enum ${type.name} { COMPAT_Z }" "union" -> objectNames.firstOrNull { it != type.name }?.let { "extend union ${type.name} = $it" } "scalar" -> "extend scalar ${type.name} @specifiedBy(url: \"https://example.com\")" else -> "extend $other ${type.name} { compatZ: String }" - }?.let { snippets += "kind" to it } + }?.let { add("kind", it, setOf(type.name)) } } - snippets += "undeclared" to "extend $kind ${type.name} @compatUndeclared" - firstMember(type)?.let { snippets += "repeat" to "extend $kind ${type.name} $it" } + addDirective("undeclared", "compatUndeclared", "@compatUndeclared") + firstMember(type)?.let { (name, member) -> add("repeat", "extend $kind ${type.name} $member", setOf(type.name), setOf(name)) } for (directive in directives) { + val name = directive.name if (LOCATIONS.getValue(kind) !in directive.directiveLocations.map { it.name }) { - snippets += "location" to "extend $kind ${type.name} @${directive.name}" + addDirective("location", name, "@$name") continue } for (argument in directive.inputValueDefinitions) { for (literal in wrongLiterals(argument.type)) { - snippets += "argval" to "extend $kind ${type.name} @${directive.name}(${argument.name}: $literal)" + addDirective("argval", name, "@$name(${argument.name}: $literal)") } } if (!directive.isRepeatable && directive.inputValueDefinitions.none { it.type is NonNullType && it.defaultValue == null }) { - snippets += "repeat-directive" to "extend $kind ${type.name} @${directive.name} @${directive.name}" + addDirective("repeat-directive", name, "@$name @$name") } } } return snippets } -private fun firstMember(type: TypeDefinition<*>): String? = when (type) { - is EnumTypeDefinition -> type.enumValueDefinitions.firstOrNull()?.let { "{ ${it.name} }" } - is UnionTypeDefinition -> type.memberTypes.firstOrNull()?.let { "= ${(it as TypeName).name}" } - is ObjectTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } - is InterfaceTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } - is InputObjectTypeDefinition -> type.inputValueDefinitions.firstOrNull()?.let { "{ ${AstPrinter.printAst(it).oneLine()} }" } +private fun firstMember(type: TypeDefinition<*>): Pair? = when (type) { + is EnumTypeDefinition -> type.enumValueDefinitions.firstOrNull()?.let { it.name to "{ ${it.name} }" } + is UnionTypeDefinition -> type.memberTypes.firstOrNull()?.let { (it as TypeName).name!! to "= ${it.name}" } + is ObjectTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { it.name to "{ ${AstPrinter.printAst(it).oneLine()} }" } + is InterfaceTypeDefinition -> type.fieldDefinitions.firstOrNull()?.let { it.name to "{ ${AstPrinter.printAst(it).oneLine()} }" } + is InputObjectTypeDefinition -> type.inputValueDefinitions.firstOrNull()?.let { it.name to "{ ${AstPrinter.printAst(it).oneLine()} }" } else -> null } diff --git a/src/test/resources/compat/15.0.0/cases.tsv b/src/test/resources/compat/15.0.0/cases.tsv index e191fc58..9987adb6 100644 --- a/src/test/resources/compat/15.0.0/cases.tsv +++ b/src/test/resources/compat/15.0.0/cases.tsv @@ -1,5 +1,5 @@ async seed BUILT -async proxy FieldResolverError: Field 'Query.future' resolves to graphql.kickstart.tools.compat.scenarios.AsyncQuery.future, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncQuery, so every query of the field will fail. +async proxy FieldResolverError: Field 'Query.future' resolves to graphql.kickstart.tools.compat.scenarios.AsyncQuery.future, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncQuery, so every query of the field will fail. Field 'Query.suspended' resolves to graphql.kickstart.tools.compat.scenarios.AsyncQuery.suspended, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncQuery, so every query of the field will fail. Field 'Query.shipments' resolves to graphql.kickstart.tools.compat.scenarios.AsyncQuery.shipments, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncQuery, so every query of the field will fail. Field 'Subscription.ticks' resolves to graphql.kickstart.tools.compat.scenarios.AsyncSubscription.ticks, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AsyncSubscription, so every query of the field will fail. Field 'Shipment.status' resolves to graphql.kickstart.tools.compat.scenarios.ShipmentResolver.status, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ShipmentResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. async kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. async kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. async kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -7,14 +7,14 @@ async kind extend union Query = Shipment BUILT Type 'Query' is defined as an obj async kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. async undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. async repeat extend type Query { future: String! } SchemaError: Type 'Query' declares field 'future' more than once at line 1, column 21. -async location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +async location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. async kind extend interface Shipment { compatZ: String } BUILT Type 'Shipment' is defined as an object type, but extended as an interface. The extension is ignored. async kind extend input Shipment { compatZ: String } BUILT Type 'Shipment' is defined as an object type, but extended as an input object type. The extension is ignored. async kind extend enum Shipment { COMPAT_Z } BUILT Type 'Shipment' is defined as an object type, but extended as an enum. The extension is ignored. async kind extend scalar Shipment @specifiedBy(url: "https://example.com") BUILT Type 'Shipment' is defined as an object type, but extended as a scalar. The extension is ignored. async undeclared extend type Shipment @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. async repeat extend type Shipment { id: ID! } SchemaError: Type 'Shipment' declares field 'id' more than once at line 1, column 24. -async location extend type Shipment @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +async location extend type Shipment @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 22 is missing its required argument 'url'. async kind extend interface Subscription { compatZ: String } BUILT Type 'Subscription' is defined as an object type, but extended as an interface. The extension is ignored. async kind extend input Subscription { compatZ: String } BUILT Type 'Subscription' is defined as an object type, but extended as an input object type. The extension is ignored. async kind extend enum Subscription { COMPAT_Z } BUILT Type 'Subscription' is defined as an object type, but extended as an enum. The extension is ignored. @@ -22,18 +22,18 @@ async kind extend union Subscription = Shipment BUILT Type 'Subscription' is def async kind extend scalar Subscription @specifiedBy(url: "https://example.com") BUILT Type 'Subscription' is defined as an object type, but extended as a scalar. The extension is ignored. async undeclared extend type Subscription @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. async repeat extend type Subscription { ticks(count: Int!): Int! } SchemaError: Type 'Subscription' declares field 'ticks' more than once at line 1, column 28. -async location extend type Subscription @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to OBJECT, but it's declared on SCALAR. +async location extend type Subscription @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 26 is missing its required argument 'url'. bookstore seed BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore proxy FieldResolverError: Field 'Query.books' resolves to graphql.kickstart.tools.compat.scenarios.BookstoreQuery.books, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.BookstoreQuery, so every query of the field will fail. +bookstore proxy FieldResolverError: Field 'Query.books' resolves to graphql.kickstart.tools.compat.scenarios.BookstoreQuery.books, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.BookstoreQuery, so every query of the field will fail. Field 'Query.book' resolves to graphql.kickstart.tools.compat.scenarios.BookstoreQuery.book, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.BookstoreQuery, so every query of the field will fail. Field 'Book.author' resolves to graphql.kickstart.tools.compat.scenarios.AuthorResolver.author, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.AuthorResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. bookstore kind extend type Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. bookstore kind extend interface Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. bookstore kind extend input Date { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. bookstore kind extend enum Date { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. bookstore kind extend union Date = Book BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. bookstore undeclared extend scalar Date @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore argval extend scalar Date @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore argval extend scalar Date @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore argval extend scalar Date @specifiedBy(url: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore argval extend scalar Date @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore kind extend interface Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. bookstore kind extend input Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. bookstore kind extend enum Query { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -41,7 +41,7 @@ bookstore kind extend union Query = Book BUILT Schema type was defined but can n bookstore kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. bookstore undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore repeat extend type Query { books: [Book!]! } SchemaError: Type 'Query' declares field 'books' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore kind extend interface Book { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. bookstore kind extend input Book { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. bookstore kind extend enum Book { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. @@ -49,7 +49,7 @@ bookstore kind extend union Book = Author BUILT Schema type was defined but can bookstore kind extend scalar Book @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. bookstore undeclared extend type Book @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore repeat extend type Book { id: ID! } SchemaError: Type 'Book' declares field 'id' more than once at line 1, column 20. Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore kind extend interface Author { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an interface. The extension is ignored. bookstore kind extend input Author { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an input object type. The extension is ignored. bookstore kind extend enum Author { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as an enum. The extension is ignored. @@ -57,7 +57,7 @@ bookstore kind extend union Author = Book BUILT Schema type was defined but can bookstore kind extend scalar Author @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Author' is defined as an object type, but extended as a scalar. The extension is ignored. bookstore undeclared extend type Author @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore repeat extend type Author { id: ID! } SchemaError: Type 'Author' declares field 'id' more than once at line 1, column 22. Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore location extend type Author @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Review +bookstore location extend type Author @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore kind extend interface Review { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an interface. The extension is ignored. bookstore kind extend input Review { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an input object type. The extension is ignored. bookstore kind extend enum Review { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review Type 'Review' is defined as an object type, but extended as an enum. The extension is ignored. @@ -66,51 +66,51 @@ bookstore kind extend scalar Review @specifiedBy(url: "https://example.com") BUI bookstore undeclared extend type Review @compatUndeclared BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore repeat extend type Review { stars: Int! } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review bookstore location extend type Review @specifiedBy BUILT Schema type was defined but can never be accessed, and can be safely deleted: Review -bookstore-missing-resolver seed FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver kind extend type Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. -bookstore-missing-resolver kind extend interface Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. -bookstore-missing-resolver kind extend input Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. -bookstore-missing-resolver kind extend enum Date { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. -bookstore-missing-resolver kind extend union Date = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. -bookstore-missing-resolver undeclared extend scalar Date @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: 5) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: NOPE) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: null) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver kind extend interface Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -bookstore-missing-resolver kind extend input Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -bookstore-missing-resolver kind extend enum Query { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -bookstore-missing-resolver kind extend union Query = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. -bookstore-missing-resolver kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -bookstore-missing-resolver undeclared extend type Query @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver repeat extend type Query { books: [Book!]! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver location extend type Query @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver kind extend interface Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. -bookstore-missing-resolver kind extend input Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. -bookstore-missing-resolver kind extend enum Book { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. -bookstore-missing-resolver kind extend union Book = Author FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as a union. The extension is ignored. -bookstore-missing-resolver kind extend scalar Book @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. -bookstore-missing-resolver undeclared extend type Book @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver repeat extend type Book { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver location extend type Book @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver kind extend interface Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an interface. The extension is ignored. -bookstore-missing-resolver kind extend input Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an input object type. The extension is ignored. -bookstore-missing-resolver kind extend enum Author { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as an enum. The extension is ignored. -bookstore-missing-resolver kind extend union Author = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as a union. The extension is ignored. -bookstore-missing-resolver kind extend scalar Author @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Author' is defined as an object type, but extended as a scalar. The extension is ignored. -bookstore-missing-resolver undeclared extend type Author @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver repeat extend type Author { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver location extend type Author @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver kind extend interface Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an interface. The extension is ignored. -bookstore-missing-resolver kind extend input Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an input object type. The extension is ignored. -bookstore-missing-resolver kind extend enum Review { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as an enum. The extension is ignored. -bookstore-missing-resolver kind extend union Review = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as a union. The extension is ignored. -bookstore-missing-resolver kind extend scalar Review @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Review' is defined as an object type, but extended as a scalar. The extension is ignored. -bookstore-missing-resolver undeclared extend type Review @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver repeat extend type Review { stars: Int! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -bookstore-missing-resolver location extend type Review @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +bookstore-missing-resolver seed FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver kind extend type Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. +bookstore-missing-resolver kind extend interface Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Date { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Date { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Date = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. +bookstore-missing-resolver undeclared extend scalar Date @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: 5) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: NOPE) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver argval extend scalar Date @specifiedBy(url: null) FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver kind extend interface Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Query { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Query { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Query = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Query @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver repeat extend type Query { books: [Book!]! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver location extend type Query @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver kind extend interface Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Book { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Book { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Book = Author FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Book' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Book @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Book @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver repeat extend type Book { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver location extend type Book @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver kind extend interface Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Author' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Author { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Author' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Author { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Author' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Author = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Author' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Author @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Author' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Author @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver repeat extend type Author { id: ID! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver location extend type Author @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver kind extend interface Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Review' is defined as an object type, but extended as an interface. The extension is ignored. +bookstore-missing-resolver kind extend input Review { compatZ: String } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Review' is defined as an object type, but extended as an input object type. The extension is ignored. +bookstore-missing-resolver kind extend enum Review { COMPAT_Z } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Review' is defined as an object type, but extended as an enum. The extension is ignored. +bookstore-missing-resolver kind extend union Review = Book FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Review' is defined as an object type, but extended as a union. The extension is ignored. +bookstore-missing-resolver kind extend scalar Review @specifiedBy(url: "https://example.com") FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() Type 'Review' is defined as an object type, but extended as a scalar. The extension is ignored. +bookstore-missing-resolver undeclared extend type Review @compatUndeclared FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver repeat extend type Review { stars: Int! } FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() +bookstore-missing-resolver location extend type Review @specifiedBy FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn(graphql.kickstart.tools.compat.scenarios.Book) graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn graphql.kickstart.tools.compat.scenarios.Book.isbn() graphql.kickstart.tools.compat.scenarios.Book.getIsbn() graphql.kickstart.tools.compat.scenarios.Book.isbn graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn() graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn() context-and-environment seed BUILT -context-and-environment proxy FieldResolverError: Field 'Query.greeting' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.greeting, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. +context-and-environment proxy FieldResolverError: Field 'Query.greeting' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.greeting, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. Field 'Query.farewell' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.farewell, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. Field 'Query.user' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.user, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. Field 'Query.environmentOnly' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.environmentOnly, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. Field 'Query.contextOnly' resolves to graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery.contextOnly, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentQuery, so every query of the field will fail. Field 'User.locale' resolves to graphql.kickstart.tools.compat.scenarios.UserResolver.locale, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.UserResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. context-and-environment kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. context-and-environment kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. context-and-environment kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -118,23 +118,23 @@ context-and-environment kind extend union Query = User BUILT Type 'Query' is def context-and-environment kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. context-and-environment undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. context-and-environment repeat extend type Query { greeting(name: String!): String! } SchemaError: Type 'Query' declares field 'greeting' more than once at line 1, column 21. -context-and-environment location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +context-and-environment location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. context-and-environment kind extend interface User { compatZ: String } BUILT Type 'User' is defined as an object type, but extended as an interface. The extension is ignored. context-and-environment kind extend input User { compatZ: String } BUILT Type 'User' is defined as an object type, but extended as an input object type. The extension is ignored. context-and-environment kind extend enum User { COMPAT_Z } BUILT Type 'User' is defined as an object type, but extended as an enum. The extension is ignored. context-and-environment kind extend scalar User @specifiedBy(url: "https://example.com") BUILT Type 'User' is defined as an object type, but extended as a scalar. The extension is ignored. context-and-environment undeclared extend type User @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. context-and-environment repeat extend type User { name: String! } SchemaError: Type 'User' declares field 'name' more than once at line 1, column 20. -context-and-environment location extend type User @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. -context-and-environment-invalid seed FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: -context-and-environment-invalid proxy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: -context-and-environment-invalid kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -context-and-environment-invalid kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -context-and-environment-invalid kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -context-and-environment-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -context-and-environment-invalid undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: -context-and-environment-invalid repeat extend type Query { greeting(name: String!): String! } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: -context-and-environment-invalid location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: +context-and-environment location extend type User @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. +context-and-environment-invalid seed FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) +context-and-environment-invalid proxy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) +context-and-environment-invalid kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +context-and-environment-invalid kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +context-and-environment-invalid kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +context-and-environment-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +context-and-environment-invalid undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) +context-and-environment-invalid repeat extend type Query { greeting(name: String!): String! } FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) +context-and-environment-invalid location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/context-and-environment-invalid/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class graphql.kickstart.tools.compat.scenarios.AppContext]), in priority order: graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.greeting(~name) graphql.kickstart.tools.compat.scenarios.ContextAndEnvironmentInvalidQuery.getGreeting(~name) context-misbound seed FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. context-misbound proxy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. context-misbound kind extend interface Query { compatZ: String } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. @@ -153,7 +153,7 @@ context-misbound undeclared extend type User @compatUndeclared FieldResolverErro context-misbound repeat extend type User { name: String! } FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. context-misbound location extend type User @specifiedBy FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter. directive-drift seed BUILT -directive-drift proxy FieldResolverError: Field 'Query.plain' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.plain, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. +directive-drift proxy FieldResolverError: Field 'Query.plain' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.plain, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.old' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.old, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.older' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.older, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.animal' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.animal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.pet' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.pet, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.color' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.color, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.when' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.when, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. Field 'Query.price' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery.price, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. directive-drift kind extend type Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an object type. The extension is ignored. directive-drift kind extend interface Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an interface. The extension is ignored. directive-drift kind extend input Kind { compatZ: String } BUILT Type 'Kind' is defined as an enum, but extended as an input object type. The extension is ignored. @@ -161,21 +161,21 @@ directive-drift kind extend union Kind = Dog BUILT Type 'Kind' is defined as an directive-drift kind extend scalar Kind @specifiedBy(url: "https://example.com") BUILT Type 'Kind' is defined as an enum, but extended as a scalar. The extension is ignored. directive-drift undeclared extend enum Kind @compatUndeclared BUILT directive-drift repeat extend enum Kind { PLAIN } SchemaError: Type 'Kind' declares value 'PLAIN' more than once at line 1, column 20. -directive-drift argval extend enum Kind @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend enum Kind @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend enum Kind @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend enum Kind @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend enum Kind @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend enum Kind @tag(level: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend enum Kind @tag(kind: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend enum Kind @tag(kind: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend enum Kind @tag(meta: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend enum Kind @tag(meta: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. -directive-drift argval extend enum Kind @once(reason: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend enum Kind @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Kind @once(reason: 5) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' +directive-drift argval extend enum Kind @once(reason: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' directive-drift repeat-directive extend enum Kind @once @once SchemaError: Directive @once at line 1, column 24 isn't repeatable but is applied more than once. -directive-drift location extend enum Kind @link SchemaError: Directive @link at line 1, column 18 is applied to ENUM, but it's declared on SCHEMA. +directive-drift location extend enum Kind @link SchemaError: Directive @link at line 1, column 18 is applied to ENUM, but it's declared on SCHEMA. Directive @link at line 1, column 18 is missing its required argument 'url'. directive-drift location extend enum Kind @argDoc SchemaError: Directive @argDoc at line 1, column 18 is applied to ENUM, but it's declared on FIELD_DEFINITION. directive-drift location extend enum Kind @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 18 is applied to ENUM, but it's declared on FIELD_DEFINITION. -directive-drift location extend enum Kind @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to ENUM, but it's declared on SCALAR. +directive-drift location extend enum Kind @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. directive-drift kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. directive-drift kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. directive-drift kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -183,9 +183,9 @@ directive-drift kind extend union Query = Dog BUILT Type 'Query' is defined as a directive-drift kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. directive-drift undeclared extend type Query @compatUndeclared BUILT directive-drift repeat extend type Query { plain: String @tag(name: "plain", level: 2) @once(reason: "supplied") @fieldOnly @argDoc(note: "x") } SchemaError: Type 'Query' declares field 'plain' more than once at line 1, column 21. -directive-drift argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend type Query @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend type Query @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend type Query @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. @@ -194,10 +194,10 @@ directive-drift argval extend type Query @tag(meta: "x") SchemaError: Directive directive-drift argval extend type Query @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift argval extend type Query @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift repeat-directive extend type Query @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. -directive-drift location extend type Query @link SchemaError: Directive @link at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. +directive-drift location extend type Query @link SchemaError: Directive @link at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. Directive @link at line 1, column 19 is missing its required argument 'url'. directive-drift location extend type Query @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. directive-drift location extend type Query @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directive-drift location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +directive-drift location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. directive-drift kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. directive-drift kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. directive-drift kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. @@ -205,9 +205,9 @@ directive-drift kind extend union Animal = Dog BUILT Type 'Animal' is defined as directive-drift kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. directive-drift undeclared extend interface Animal @compatUndeclared BUILT directive-drift repeat extend interface Animal { name: String @once } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. -directive-drift argval extend interface Animal @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend interface Animal @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend interface Animal @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend interface Animal @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend interface Animal @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend interface Animal @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend interface Animal @tag(level: "x") SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. directive-drift argval extend interface Animal @tag(kind: 5) SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. directive-drift argval extend interface Animal @tag(kind: "x") SchemaError: Directive @tag at line 1, column 25 is missing its required argument 'name'. @@ -216,31 +216,31 @@ directive-drift argval extend interface Animal @tag(meta: "x") SchemaError: Dire directive-drift argval extend interface Animal @once(reason: 5) SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. directive-drift argval extend interface Animal @once(reason: NOPE) SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. directive-drift repeat-directive extend interface Animal @once @once SchemaError: Directive @once at line 1, column 25 isn't repeatable but is applied more than once. -directive-drift location extend interface Animal @link SchemaError: Directive @link at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. +directive-drift location extend interface Animal @link SchemaError: Directive @link at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. Directive @link at line 1, column 25 is missing its required argument 'url'. directive-drift location extend interface Animal @argDoc SchemaError: Directive @argDoc at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. directive-drift location extend interface Animal @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. -directive-drift location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +directive-drift location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. directive-drift kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. directive-drift kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. directive-drift kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. directive-drift kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. directive-drift undeclared extend type Dog @compatUndeclared BUILT directive-drift repeat extend type Dog { name: String } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. -directive-drift argval extend type Dog @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend type Dog @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend type Dog @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend type Dog @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend type Dog @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend type Dog @tag(level: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. directive-drift argval extend type Dog @tag(kind: 5) SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. directive-drift argval extend type Dog @tag(kind: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. directive-drift argval extend type Dog @tag(meta: 5) SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. directive-drift argval extend type Dog @tag(meta: "x") SchemaError: Directive @tag at line 1, column 17 is missing its required argument 'name'. -directive-drift argval extend type Dog @once(reason: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend type Dog @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend type Dog @once(reason: 5) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' +directive-drift argval extend type Dog @once(reason: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' directive-drift repeat-directive extend type Dog @once @once SchemaError: Directive @once at line 1, column 23 isn't repeatable but is applied more than once. -directive-drift location extend type Dog @link SchemaError: Directive @link at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. +directive-drift location extend type Dog @link SchemaError: Directive @link at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. Directive @link at line 1, column 17 is missing its required argument 'url'. directive-drift location extend type Dog @argDoc SchemaError: Directive @argDoc at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. directive-drift location extend type Dog @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directive-drift location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +directive-drift location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. directive-drift kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. directive-drift kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. directive-drift kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. @@ -248,9 +248,9 @@ directive-drift kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is defined as directive-drift kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. directive-drift undeclared extend union Pet @compatUndeclared BUILT directive-drift repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. -directive-drift argval extend union Pet @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend union Pet @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend union Pet @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend union Pet @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend union Pet @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend union Pet @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend union Pet @tag(level: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend union Pet @tag(kind: 5) SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. directive-drift argval extend union Pet @tag(kind: "x") SchemaError: Directive @tag at line 1, column 18 is missing its required argument 'name'. @@ -259,10 +259,10 @@ directive-drift argval extend union Pet @tag(meta: "x") SchemaError: Directive @ directive-drift argval extend union Pet @once(reason: 5) SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. directive-drift argval extend union Pet @once(reason: NOPE) SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. directive-drift repeat-directive extend union Pet @once @once SchemaError: Directive @once at line 1, column 18 isn't repeatable but is applied more than once. -directive-drift location extend union Pet @link SchemaError: Directive @link at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. +directive-drift location extend union Pet @link SchemaError: Directive @link at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. Directive @link at line 1, column 18 is missing its required argument 'url'. directive-drift location extend union Pet @argDoc SchemaError: Directive @argDoc at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. directive-drift location extend union Pet @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. -directive-drift location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +directive-drift location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. directive-drift kind extend type Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. directive-drift kind extend interface Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. directive-drift kind extend input Color { compatZ: String } BUILT Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. @@ -270,9 +270,9 @@ directive-drift kind extend union Color = Dog BUILT Type 'Color' is defined as a directive-drift kind extend scalar Color @specifiedBy(url: "https://example.com") BUILT Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. directive-drift undeclared extend enum Color @compatUndeclared BUILT directive-drift repeat extend enum Color { RED } SchemaError: Type 'Color' declares value 'RED' more than once at line 1, column 21. -directive-drift argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend enum Color @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend enum Color @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend enum Color @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. @@ -281,10 +281,10 @@ directive-drift argval extend enum Color @tag(meta: "x") SchemaError: Directive directive-drift argval extend enum Color @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift argval extend enum Color @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift repeat-directive extend enum Color @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. -directive-drift location extend enum Color @link SchemaError: Directive @link at line 1, column 19 is applied to ENUM, but it's declared on SCHEMA. +directive-drift location extend enum Color @link SchemaError: Directive @link at line 1, column 19 is applied to ENUM, but it's declared on SCHEMA. Directive @link at line 1, column 19 is missing its required argument 'url'. directive-drift location extend enum Color @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. directive-drift location extend enum Color @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. -directive-drift location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. +directive-drift location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. directive-drift kind extend type Meta { compatZ: String } BUILT Type 'Meta' is defined as an input object type, but extended as an object type. The extension is ignored. directive-drift kind extend interface Meta { compatZ: String } BUILT Type 'Meta' is defined as an input object type, but extended as an interface. The extension is ignored. directive-drift kind extend enum Meta { COMPAT_Z } BUILT Type 'Meta' is defined as an input object type, but extended as an enum. The extension is ignored. @@ -292,9 +292,9 @@ directive-drift kind extend union Meta = Dog BUILT Type 'Meta' is defined as an directive-drift kind extend scalar Meta @specifiedBy(url: "https://example.com") BUILT Type 'Meta' is defined as an input object type, but extended as a scalar. The extension is ignored. directive-drift undeclared extend input Meta @compatUndeclared BUILT directive-drift repeat extend input Meta { owner: String @once(reason: "x") } SchemaError: Type 'Meta' declares field 'owner' more than once at line 1, column 21. -directive-drift argval extend input Meta @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend input Meta @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend input Meta @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend input Meta @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend input Meta @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend input Meta @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend input Meta @tag(level: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend input Meta @tag(kind: 5) SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. directive-drift argval extend input Meta @tag(kind: "x") SchemaError: Directive @tag at line 1, column 19 is missing its required argument 'name'. @@ -303,19 +303,19 @@ directive-drift argval extend input Meta @tag(meta: "x") SchemaError: Directive directive-drift argval extend input Meta @once(reason: 5) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift argval extend input Meta @once(reason: NOPE) SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. directive-drift repeat-directive extend input Meta @once @once SchemaError: Directive @once at line 1, column 19 isn't repeatable but is applied more than once. -directive-drift location extend input Meta @link SchemaError: Directive @link at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCHEMA. +directive-drift location extend input Meta @link SchemaError: Directive @link at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCHEMA. Directive @link at line 1, column 19 is missing its required argument 'url'. directive-drift location extend input Meta @argDoc SchemaError: Directive @argDoc at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. directive-drift location extend input Meta @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. -directive-drift location extend input Meta @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCALAR. +directive-drift location extend input Meta @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. directive-drift kind extend type Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. directive-drift kind extend interface Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. directive-drift kind extend input Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. directive-drift kind extend enum Date { COMPAT_Z } BUILT Type 'Date' is defined as a scalar, but extended as an enum. The extension is ignored. directive-drift kind extend union Date = Dog BUILT Type 'Date' is defined as a scalar, but extended as a union. The extension is ignored. directive-drift undeclared extend scalar Date @compatUndeclared BUILT -directive-drift argval extend scalar Date @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Date @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Date @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Date @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend scalar Date @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend scalar Date @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend scalar Date @tag(level: "x") SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. directive-drift argval extend scalar Date @tag(kind: 5) SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. directive-drift argval extend scalar Date @tag(kind: "x") SchemaError: Directive @tag at line 1, column 20 is missing its required argument 'name'. @@ -324,7 +324,7 @@ directive-drift argval extend scalar Date @tag(meta: "x") SchemaError: Directive directive-drift argval extend scalar Date @once(reason: 5) SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. directive-drift argval extend scalar Date @once(reason: NOPE) SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. directive-drift repeat-directive extend scalar Date @once @once SchemaError: Directive @once at line 1, column 20 isn't repeatable but is applied more than once. -directive-drift location extend scalar Date @link SchemaError: Directive @link at line 1, column 20 is applied to SCALAR, but it's declared on SCHEMA. +directive-drift location extend scalar Date @link SchemaError: Directive @link at line 1, column 20 is applied to SCALAR, but it's declared on SCHEMA. Directive @link at line 1, column 20 is missing its required argument 'url'. directive-drift location extend scalar Date @argDoc SchemaError: Directive @argDoc at line 1, column 20 is applied to SCALAR, but it's declared on FIELD_DEFINITION. directive-drift location extend scalar Date @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 20 is applied to SCALAR, but it's declared on FIELD_DEFINITION. directive-drift argval extend scalar Date @specifiedBy(url: 5) SchemaError: Directive @specifiedBy at line 1, column 20 isn't repeatable but is applied more than once. @@ -336,25 +336,25 @@ directive-drift kind extend input Money { compatZ: String } BUILT Type 'Money' i directive-drift kind extend enum Money { COMPAT_Z } BUILT Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. directive-drift kind extend union Money = Dog BUILT Type 'Money' is defined as a scalar, but extended as a union. The extension is ignored. directive-drift undeclared extend scalar Money @compatUndeclared BUILT -directive-drift argval extend scalar Money @tag(name: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Money @tag(name: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Money @tag(name: null) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend scalar Money @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' +directive-drift argval extend scalar Money @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' directive-drift argval extend scalar Money @tag(level: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. directive-drift argval extend scalar Money @tag(kind: 5) SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. directive-drift argval extend scalar Money @tag(kind: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. directive-drift argval extend scalar Money @tag(meta: 5) SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. directive-drift argval extend scalar Money @tag(meta: "x") SchemaError: Directive @tag at line 1, column 21 is missing its required argument 'name'. -directive-drift argval extend scalar Money @once(reason: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Money @once(reason: NOPE) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @once(reason: 5) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' +directive-drift argval extend scalar Money @once(reason: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'reason' for applied directive of name 'once' directive-drift repeat-directive extend scalar Money @once @once SchemaError: Directive @once at line 1, column 27 isn't repeatable but is applied more than once. -directive-drift location extend scalar Money @link SchemaError: Directive @link at line 1, column 21 is applied to SCALAR, but it's declared on SCHEMA. +directive-drift location extend scalar Money @link SchemaError: Directive @link at line 1, column 21 is applied to SCALAR, but it's declared on SCHEMA. Directive @link at line 1, column 21 is missing its required argument 'url'. directive-drift location extend scalar Money @argDoc SchemaError: Directive @argDoc at line 1, column 21 is applied to SCALAR, but it's declared on FIELD_DEFINITION. directive-drift location extend scalar Money @fieldOnly SchemaError: Directive @fieldOnly at line 1, column 21 is applied to SCALAR, but it's declared on FIELD_DEFINITION. -directive-drift argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -directive-drift argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: +directive-drift argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +directive-drift argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +directive-drift argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' directive-drift-undeclared seed SchemaError: Found applied directive undeclared without corresponding directive definition. -directive-drift-undeclared proxy FieldResolverError: Field 'Query.a' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField.a, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField, so every query of the field will fail. +directive-drift-undeclared proxy FieldResolverError: Field 'Query.a' resolves to graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField.a, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectiveDriftOneField, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. directive-drift-undeclared kind extend interface Query { compatZ: String } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. directive-drift-undeclared kind extend input Query { compatZ: String } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. directive-drift-undeclared kind extend enum Query { COMPAT_Z } SchemaError: Found applied directive undeclared without corresponding directive definition. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -363,7 +363,7 @@ directive-drift-undeclared undeclared extend type Query @compatUndeclared Schema directive-drift-undeclared repeat extend type Query { a: String @undeclared(s: "x") } SchemaError: Type 'Query' declares field 'a' more than once at line 1, column 21. directive-drift-undeclared location extend type Query @specifiedBy SchemaError: Found applied directive undeclared without corresponding directive definition. directives seed BUILT -directives proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesQuery, so every query of the field will fail. +directives proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesQuery, so every query of the field will fail. Field 'Query.oldMotto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesQuery.oldMotto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesQuery, so every query of the field will fail. Field 'Query.members' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesQuery.members, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. directives kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. directives kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. directives kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -372,8 +372,8 @@ directives kind extend scalar Query @specifiedBy(url: "https://example.com") BUI directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. directives repeat extend type Query { motto: String! @uppercase } SchemaError: Type 'Query' declares field 'motto' more than once at line 1, column 21. directives location extend type Query @uppercase SchemaError: Directive @uppercase at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directives location extend type Query @connection SchemaError: Directive @connection at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +directives location extend type Query @connection SchemaError: Directive @connection at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @connection at line 1, column 19 is missing its required argument 'for'. +directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. directives kind extend interface Member { compatZ: String } BUILT Type 'Member' is defined as an object type, but extended as an interface. The extension is ignored. directives kind extend input Member { compatZ: String } BUILT Type 'Member' is defined as an object type, but extended as an input object type. The extension is ignored. directives kind extend enum Member { COMPAT_Z } BUILT Type 'Member' is defined as an object type, but extended as an enum. The extension is ignored. @@ -381,49 +381,49 @@ directives kind extend scalar Member @specifiedBy(url: "https://example.com") BU directives undeclared extend type Member @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. directives repeat extend type Member { id: ID! } SchemaError: Type 'Member' declares field 'id' more than once at line 1, column 22. directives location extend type Member @uppercase SchemaError: Directive @uppercase at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directives location extend type Member @connection SchemaError: Directive @connection at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -directives location extend type Member @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. -directives-invalid seed SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery, so every query of the field will fail. -directives-invalid kind extend interface Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -directives-invalid kind extend input Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -directives-invalid kind extend enum Query { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -directives-invalid kind extend union Query = Member SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. -directives-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +directives location extend type Member @connection SchemaError: Directive @connection at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @connection at line 1, column 20 is missing its required argument 'for'. +directives location extend type Member @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. +directives-invalid seed SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid proxy FieldResolverError: Field 'Query.motto' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery.motto, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery, so every query of the field will fail. Field 'Query.secret' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery.secret, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery, so every query of the field will fail. Field 'Query.members' resolves to graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery.members, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.DirectivesInvalidQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. +directives-invalid kind extend interface Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +directives-invalid kind extend input Query { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +directives-invalid kind extend enum Query { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +directives-invalid kind extend union Query = Member SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +directives-invalid kind extend scalar Query @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. directives-invalid undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. directives-invalid repeat extend type Query { motto: String! @uppercase } SchemaError: Type 'Query' declares field 'motto' more than once at line 1, column 21. -directives-invalid repeat-directive extend type Query @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Query @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Query @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Query @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid kind extend interface Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an interface. The extension is ignored. -directives-invalid kind extend input Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an input object type. The extension is ignored. -directives-invalid kind extend enum Member { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as an enum. The extension is ignored. -directives-invalid kind extend scalar Member @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Type 'Member' is defined as an object type, but extended as a scalar. The extension is ignored. +directives-invalid repeat-directive extend type Query @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 1, column 30 isn't repeatable but is applied more than once. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Query @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @auth at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @auth at line 1, column 19 is missing its required argument 'role'. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Query @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @cached at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA | FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Query @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid kind extend interface Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Member' is defined as an object type, but extended as an interface. The extension is ignored. +directives-invalid kind extend input Member { compatZ: String } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Member' is defined as an object type, but extended as an input object type. The extension is ignored. +directives-invalid kind extend enum Member { COMPAT_Z } SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Member' is defined as an object type, but extended as an enum. The extension is ignored. +directives-invalid kind extend scalar Member @specifiedBy(url: "https://example.com") SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Type 'Member' is defined as an object type, but extended as a scalar. The extension is ignored. directives-invalid undeclared extend type Member @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. directives-invalid repeat extend type Member { id: ID! } SchemaError: Type 'Member' declares field 'id' more than once at line 1, column 22. -directives-invalid repeat-directive extend type Member @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Member @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Member @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. -directives-invalid location extend type Member @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. +directives-invalid repeat-directive extend type Member @uppercase @uppercase SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @uppercase at line 1, column 31 isn't repeatable but is applied more than once. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Member @auth SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @auth at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @auth at line 1, column 20 is missing its required argument 'role'. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Member @cached SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @cached at line 1, column 20 is applied to OBJECT, but it's declared on SCHEMA | FIELD_DEFINITION. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. +directives-invalid location extend type Member @specifiedBy SchemaError: Directive @deprecated at line 17, column 13 in compat/scenarios/directives-invalid/schema.graphqls is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION. Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. Directive @uppercase at line 12, column 20 in compat/scenarios/directives-invalid/schema.graphqls is applied to FIELD_DEFINITION, but it's declared on OBJECT. Directive @auth at line 13, column 20 in compat/scenarios/directives-invalid/schema.graphqls is missing its required argument 'role'. Directive @cached at line 14, column 32 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. Directive @cached at line 9, column 15 in compat/scenarios/directives-invalid/schema.graphqls isn't repeatable but is applied more than once. generic-input-resolver seed BUILT -generic-input-resolver proxy FieldResolverError: Field 'Query.generic' resolves to graphql.kickstart.tools.compat.scenarios.InputResolver.generic, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputResolver, so every query of the field will fail. +generic-input-resolver proxy FieldResolverError: Field 'Query.generic' resolves to graphql.kickstart.tools.compat.scenarios.InputResolver.generic, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputResolver, so every query of the field will fail. Field 'Query.plain' resolves to graphql.kickstart.tools.compat.scenarios.GreetingQuery.plain, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.GreetingQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. generic-input-resolver kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. generic-input-resolver kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. generic-input-resolver kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. generic-input-resolver kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. generic-input-resolver undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. generic-input-resolver repeat extend type Query { generic(input: GreetingInput!): String! } SchemaError: Type 'Query' declares field 'generic' more than once at line 1, column 21. -generic-input-resolver location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +generic-input-resolver location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. generic-input-resolver kind extend type GreetingInput { compatZ: String } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an object type. The extension is ignored. generic-input-resolver kind extend interface GreetingInput { compatZ: String } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an interface. The extension is ignored. generic-input-resolver kind extend enum GreetingInput { COMPAT_Z } BUILT Type 'GreetingInput' is defined as an input object type, but extended as an enum. The extension is ignored. generic-input-resolver kind extend scalar GreetingInput @specifiedBy(url: "https://example.com") BUILT Type 'GreetingInput' is defined as an input object type, but extended as a scalar. The extension is ignored. generic-input-resolver undeclared extend input GreetingInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. generic-input-resolver repeat extend input GreetingInput { name: String! } SchemaError: Type 'GreetingInput' declares field 'name' more than once at line 1, column 30. -generic-input-resolver location extend input GreetingInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 28 is applied to INPUT_OBJECT, but it's declared on SCALAR. +generic-input-resolver location extend input GreetingInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 28 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 28 is missing its required argument 'url'. inputs seed BUILT -inputs proxy FieldResolverError: Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.InputsQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputsQuery, so every query of the field will fail. +inputs proxy FieldResolverError: Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.InputsQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputsQuery, so every query of the field will fail. Field 'Query.nickname' resolves to graphql.kickstart.tools.compat.scenarios.InputsQuery.nickname, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputsQuery, so every query of the field will fail. Field 'Mutation.addBook' resolves to graphql.kickstart.tools.compat.scenarios.InputsMutation.addBook, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.InputsMutation, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. inputs kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. inputs kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. inputs kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -431,7 +431,7 @@ inputs kind extend union Query = SavedBook BUILT Type 'Query' is defined as an o inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend type Query { search(term: String!, limit: Int = 10, genres: [Genre!]): String! } SchemaError: Type 'Query' declares field 'search' more than once at line 1, column 21. -inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. inputs kind extend interface Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an interface. The extension is ignored. inputs kind extend input Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an input object type. The extension is ignored. inputs kind extend enum Mutation { COMPAT_Z } BUILT Type 'Mutation' is defined as an object type, but extended as an enum. The extension is ignored. @@ -439,7 +439,7 @@ inputs kind extend union Mutation = SavedBook BUILT Type 'Mutation' is defined a inputs kind extend scalar Mutation @specifiedBy(url: "https://example.com") BUILT Type 'Mutation' is defined as an object type, but extended as a scalar. The extension is ignored. inputs undeclared extend type Mutation @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend type Mutation { addBook(input: BookInput!): SavedBook! } SchemaError: Type 'Mutation' declares field 'addBook' more than once at line 1, column 24. -inputs location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +inputs location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 22 is missing its required argument 'url'. inputs kind extend type Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an object type. The extension is ignored. inputs kind extend interface Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an interface. The extension is ignored. inputs kind extend input Genre { compatZ: String } BUILT Type 'Genre' is defined as an enum, but extended as an input object type. The extension is ignored. @@ -447,7 +447,7 @@ inputs kind extend union Genre = SavedBook BUILT Type 'Genre' is defined as an e inputs kind extend scalar Genre @specifiedBy(url: "https://example.com") BUILT Type 'Genre' is defined as an enum, but extended as a scalar. The extension is ignored. inputs undeclared extend enum Genre @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend enum Genre { FICTION } SchemaError: Type 'Genre' declares value 'FICTION' more than once at line 1, column 21. -inputs location extend enum Genre @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. +inputs location extend enum Genre @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. inputs kind extend type BookInput { compatZ: String } BUILT Type 'BookInput' is defined as an input object type, but extended as an object type. The extension is ignored. inputs kind extend interface BookInput { compatZ: String } BUILT Type 'BookInput' is defined as an input object type, but extended as an interface. The extension is ignored. inputs kind extend enum BookInput { COMPAT_Z } BUILT Type 'BookInput' is defined as an input object type, but extended as an enum. The extension is ignored. @@ -455,7 +455,7 @@ inputs kind extend union BookInput = SavedBook BUILT Type 'BookInput' is defined inputs kind extend scalar BookInput @specifiedBy(url: "https://example.com") BUILT Type 'BookInput' is defined as an input object type, but extended as a scalar. The extension is ignored. inputs undeclared extend input BookInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend input BookInput { title: String! } SchemaError: Type 'BookInput' declares field 'title' more than once at line 1, column 26. -inputs location extend input BookInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +inputs location extend input BookInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 24 is missing its required argument 'url'. inputs kind extend type DetailsInput { compatZ: String } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an object type. The extension is ignored. inputs kind extend interface DetailsInput { compatZ: String } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an interface. The extension is ignored. inputs kind extend enum DetailsInput { COMPAT_Z } BUILT Type 'DetailsInput' is defined as an input object type, but extended as an enum. The extension is ignored. @@ -463,23 +463,23 @@ inputs kind extend union DetailsInput = SavedBook BUILT Type 'DetailsInput' is d inputs kind extend scalar DetailsInput @specifiedBy(url: "https://example.com") BUILT Type 'DetailsInput' is defined as an input object type, but extended as a scalar. The extension is ignored. inputs undeclared extend input DetailsInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend input DetailsInput { pages: Int! } SchemaError: Type 'DetailsInput' declares field 'pages' more than once at line 1, column 29. -inputs location extend input DetailsInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. +inputs location extend input DetailsInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 27 is missing its required argument 'url'. inputs kind extend interface SavedBook { compatZ: String } BUILT Type 'SavedBook' is defined as an object type, but extended as an interface. The extension is ignored. inputs kind extend input SavedBook { compatZ: String } BUILT Type 'SavedBook' is defined as an object type, but extended as an input object type. The extension is ignored. inputs kind extend enum SavedBook { COMPAT_Z } BUILT Type 'SavedBook' is defined as an object type, but extended as an enum. The extension is ignored. inputs kind extend scalar SavedBook @specifiedBy(url: "https://example.com") BUILT Type 'SavedBook' is defined as an object type, but extended as a scalar. The extension is ignored. inputs undeclared extend type SavedBook @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. inputs repeat extend type SavedBook { title: String! } SchemaError: Type 'SavedBook' declares field 'title' more than once at line 1, column 25. -inputs location extend type SavedBook @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to OBJECT, but it's declared on SCALAR. -jdk-proxy seed FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. -jdk-proxy proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/jdk-proxy/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -jdk-proxy kind extend interface Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -jdk-proxy kind extend input Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -jdk-proxy kind extend enum Query { COMPAT_Z } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -jdk-proxy kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -jdk-proxy undeclared extend type Query @compatUndeclared FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. -jdk-proxy repeat extend type Query { test: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. -jdk-proxy location extend type Query @specifiedBy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +inputs location extend type SavedBook @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 23 is missing its required argument 'url'. +jdk-proxy seed FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. +jdk-proxy proxy FieldResolverError: No method or field found as defined in schema compat/scenarios/jdk-proxy/schema.graphqls:2 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: jdk.proxyN.$ProxyN.test() jdk.proxyN.$ProxyN.getTest() jdk.proxyN.$ProxyN.test +jdk-proxy kind extend interface Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +jdk-proxy kind extend input Query { compatZ: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +jdk-proxy kind extend enum Query { COMPAT_Z } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +jdk-proxy kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +jdk-proxy undeclared extend type Query @compatUndeclared FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. +jdk-proxy repeat extend type Query { test: String } FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. +jdk-proxy location extend type Query @specifiedBy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. jdk-proxy-cglib seed AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class jdk-proxy-cglib proxy AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class jdk-proxy-cglib kind extend interface Query { compatZ: String } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class @@ -490,16 +490,16 @@ jdk-proxy-cglib undeclared extend type Query @compatUndeclared AopConfigExceptio jdk-proxy-cglib repeat extend type Query { test: String } AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class jdk-proxy-cglib location extend type Query @specifiedBy AopConfigException: Could not generate CGLIB subclass of class graphql.kickstart.tools.compat.scenarios.ProxiedQuery: Common causes of this problem include using a final class or a non-visible class jdk-proxy-plain seed BUILT -jdk-proxy-plain proxy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. +jdk-proxy-plain proxy FieldResolverError: Field 'Query.test' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.test, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. Field 'Query.total' resolves to graphql.kickstart.tools.compat.scenarios.ProxiedQuery.getTotal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ProxiedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. For a public field, also add a getter, since class-based proxies don't pass field reads to the target. jdk-proxy-plain kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. jdk-proxy-plain kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. jdk-proxy-plain kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. jdk-proxy-plain kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. jdk-proxy-plain undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. jdk-proxy-plain repeat extend type Query { test: String } SchemaError: Type 'Query' declares field 'test' more than once at line 1, column 21. -jdk-proxy-plain location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +jdk-proxy-plain location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-unions seed BUILT -nested-unions proxy FieldResolverError: Field 'Query.results' resolves to graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery.results, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery, so every query of the field will fail. +nested-unions proxy FieldResolverError: Field 'Query.results' resolves to graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery.results, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedUnionsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. nested-unions kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. nested-unions kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. nested-unions kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -507,7 +507,7 @@ nested-unions kind extend union Query = Book BUILT Type 'Query' is defined as an nested-unions kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. nested-unions undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-unions repeat extend type Query { results: [Result!]! } SchemaError: Type 'Query' declares field 'results' more than once at line 1, column 21. -nested-unions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-unions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-unions kind extend type Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an object type. The extension is ignored. nested-unions kind extend interface Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an interface. The extension is ignored. nested-unions kind extend input Result { compatZ: String } BUILT Type 'Result' is defined as a union, but extended as an input object type. The extension is ignored. @@ -515,7 +515,7 @@ nested-unions kind extend enum Result { COMPAT_Z } BUILT Type 'Result' is define nested-unions kind extend scalar Result @specifiedBy(url: "https://example.com") BUILT Type 'Result' is defined as a union, but extended as a scalar. The extension is ignored. nested-unions undeclared extend union Result @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-unions repeat extend union Result = Book SchemaError: Type 'Result' declares member 'Book' more than once at line 1, column 23. -nested-unions location extend union Result @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to UNION, but it's declared on SCALAR. +nested-unions location extend union Result @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. nested-unions kind extend type Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an object type. The extension is ignored. nested-unions kind extend interface Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an interface. The extension is ignored. nested-unions kind extend input Media { compatZ: String } BUILT Type 'Media' is defined as a union, but extended as an input object type. The extension is ignored. @@ -523,7 +523,7 @@ nested-unions kind extend enum Media { COMPAT_Z } BUILT Type 'Media' is defined nested-unions kind extend scalar Media @specifiedBy(url: "https://example.com") BUILT Type 'Media' is defined as a union, but extended as a scalar. The extension is ignored. nested-unions undeclared extend union Media @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-unions repeat extend union Media = Movie SchemaError: Type 'Media' declares member 'Movie' more than once at line 1, column 22. -nested-unions location extend union Media @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to UNION, but it's declared on SCALAR. +nested-unions location extend union Media @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. nested-unions kind extend interface Book { compatZ: String } BUILT Type 'Book' is defined as an object type, but extended as an interface. The extension is ignored. nested-unions kind extend input Book { compatZ: String } BUILT Type 'Book' is defined as an object type, but extended as an input object type. The extension is ignored. nested-unions kind extend enum Book { COMPAT_Z } BUILT Type 'Book' is defined as an object type, but extended as an enum. The extension is ignored. @@ -531,7 +531,7 @@ nested-unions kind extend union Book = Movie BUILT Type 'Book' is defined as an nested-unions kind extend scalar Book @specifiedBy(url: "https://example.com") BUILT Type 'Book' is defined as an object type, but extended as a scalar. The extension is ignored. nested-unions undeclared extend type Book @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-unions repeat extend type Book { title: String! } SchemaError: Type 'Book' declares field 'title' more than once at line 1, column 20. -nested-unions location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-unions location extend type Book @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. nested-unions kind extend interface Movie { compatZ: String } BUILT Type 'Movie' is defined as an object type, but extended as an interface. The extension is ignored. nested-unions kind extend input Movie { compatZ: String } BUILT Type 'Movie' is defined as an object type, but extended as an input object type. The extension is ignored. nested-unions kind extend enum Movie { COMPAT_Z } BUILT Type 'Movie' is defined as an object type, but extended as an enum. The extension is ignored. @@ -539,9 +539,9 @@ nested-unions kind extend union Movie = Book BUILT Type 'Movie' is defined as an nested-unions kind extend scalar Movie @specifiedBy(url: "https://example.com") BUILT Type 'Movie' is defined as an object type, but extended as a scalar. The extension is ignored. nested-unions undeclared extend type Movie @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-unions repeat extend type Movie { title: String! } SchemaError: Type 'Movie' declares field 'title' more than once at line 1, column 21. -nested-unions location extend type Movie @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-unions location extend type Movie @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-wrappers seed BUILT -nested-wrappers proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. +nested-wrappers proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.payloads' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payloads, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.payloadStrings' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payloadStrings, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.items' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.items, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.itemNames' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.itemNames, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfFuture' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfFuture, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfTries' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfTries, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.triesOfFutures' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.triesOfFutures, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.loadedItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.loadedItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.failedTryInList' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.failedTryInList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.failedFutureInList' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.failedFutureInList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.plainItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.plainItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. nested-wrappers kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -549,7 +549,7 @@ nested-wrappers kind extend union Query = Payload BUILT Type 'Query' is defined nested-wrappers kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers repeat extend type Query { payload: Payload! } SchemaError: Type 'Query' declares field 'payload' more than once at line 1, column 21. -nested-wrappers location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-wrappers kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. @@ -557,7 +557,7 @@ nested-wrappers kind extend union Payload = Item BUILT Type 'Payload' is defined nested-wrappers kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers repeat extend type Payload { data: String! } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. -nested-wrappers location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. nested-wrappers kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. @@ -565,18 +565,18 @@ nested-wrappers kind extend union Item = Payload BUILT Type 'Item' is defined as nested-wrappers kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. -nested-wrappers location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. nested-wrappers-exact seed BUILT -nested-wrappers-exact proxy FieldResolverError: Field 'Query.dates' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.dates, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. +nested-wrappers-exact proxy FieldResolverError: Field 'Query.dates' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.dates, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.triedDates' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.triedDates, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.plainFutureItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.plainFutureItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.batchedItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.batchedItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.boxedItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.boxedItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.laterItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.laterItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. Field 'Query.suspendPlainFutureItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery.suspendPlainFutureItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersExactQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. nested-wrappers-exact kind extend type DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an object type. The extension is ignored. nested-wrappers-exact kind extend interface DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an interface. The extension is ignored. nested-wrappers-exact kind extend input DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. nested-wrappers-exact kind extend enum DateTime { COMPAT_Z } BUILT Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. nested-wrappers-exact kind extend union DateTime = Item BUILT Type 'DateTime' is defined as a scalar, but extended as a union. The extension is ignored. nested-wrappers-exact undeclared extend scalar DateTime @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +nested-wrappers-exact argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' nested-wrappers-exact kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-exact kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-exact kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -584,16 +584,16 @@ nested-wrappers-exact kind extend union Query = Item BUILT Type 'Query' is defin nested-wrappers-exact kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-exact undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-exact repeat extend type Query { dates: [DateTime] } SchemaError: Type 'Query' declares field 'dates' more than once at line 1, column 21. -nested-wrappers-exact location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-exact location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-wrappers-exact kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-exact kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-exact kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. nested-wrappers-exact kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-exact undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-exact repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. -nested-wrappers-exact location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-exact location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. nested-wrappers-suspend seed BUILT -nested-wrappers-suspend proxy FieldResolverError: Field 'Query.nullableItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery.nullableItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery, so every query of the field will fail. +nested-wrappers-suspend proxy FieldResolverError: Field 'Query.nullableItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery.nullableItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery, so every query of the field will fail. Field 'Query.nonNullItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery.nonNullItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery, so every query of the field will fail. Field 'Query.typeVariableStrings' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery.typeVariableStrings, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersSuspendQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. nested-wrappers-suspend kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-suspend kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-suspend kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -601,16 +601,16 @@ nested-wrappers-suspend kind extend union Query = Item BUILT Type 'Query' is def nested-wrappers-suspend kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-suspend undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-suspend repeat extend type Query { nullableItems: [Item] } SchemaError: Type 'Query' declares field 'nullableItems' more than once at line 1, column 21. -nested-wrappers-suspend location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-suspend location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-wrappers-suspend kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-suspend kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-suspend kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. nested-wrappers-suspend kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-suspend undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-suspend repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. -nested-wrappers-suspend location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-suspend location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. nested-wrappers-unboxer seed BUILT -nested-wrappers-unboxer proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. +nested-wrappers-unboxer proxy FieldResolverError: Field 'Query.payload' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payload, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.payloads' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payloads, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.payloadStrings' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.payloadStrings, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.items' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.items, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.itemNames' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.itemNames, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfFuture' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfFuture, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfTries' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfTries, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.triesOfFutures' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.triesOfFutures, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.loadedItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.loadedItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.failedTryInList' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.failedTryInList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.failedFutureInList' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.failedFutureInList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.plainItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.plainItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. Field 'Query.futureOfItems' resolves to graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery.futureOfItems, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.NestedWrappersQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. nested-wrappers-unboxer kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-unboxer kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-unboxer kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -618,7 +618,7 @@ nested-wrappers-unboxer kind extend union Query = Payload BUILT Type 'Query' is nested-wrappers-unboxer kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-unboxer undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-unboxer repeat extend type Query { payload: Payload! } SchemaError: Type 'Query' declares field 'payload' more than once at line 1, column 21. -nested-wrappers-unboxer location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. nested-wrappers-unboxer kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-unboxer kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-unboxer kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. @@ -626,7 +626,7 @@ nested-wrappers-unboxer kind extend union Payload = Item BUILT Type 'Payload' is nested-wrappers-unboxer kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-unboxer undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-unboxer repeat extend type Payload { data: String! } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. -nested-wrappers-unboxer location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. nested-wrappers-unboxer kind extend interface Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an interface. The extension is ignored. nested-wrappers-unboxer kind extend input Item { compatZ: String } BUILT Type 'Item' is defined as an object type, but extended as an input object type. The extension is ignored. nested-wrappers-unboxer kind extend enum Item { COMPAT_Z } BUILT Type 'Item' is defined as an object type, but extended as an enum. The extension is ignored. @@ -634,9 +634,9 @@ nested-wrappers-unboxer kind extend union Item = Payload BUILT Type 'Item' is de nested-wrappers-unboxer kind extend scalar Item @specifiedBy(url: "https://example.com") BUILT Type 'Item' is defined as an object type, but extended as a scalar. The extension is ignored. nested-wrappers-unboxer undeclared extend type Item @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. nested-wrappers-unboxer repeat extend type Item { id: ID! } SchemaError: Type 'Item' declares field 'id' more than once at line 1, column 20. -nested-wrappers-unboxer location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. +nested-wrappers-unboxer location extend type Item @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. optional-results seed BUILT -optional-results proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery, so every query of the field will fail. +optional-results proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery, so every query of the field will fail. Field 'Query.optionalResultName' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery.optionalResultName, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery, so every query of the field will fail. Field 'Query.emptyOptionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery.emptyOptionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. optional-results kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. optional-results kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -644,16 +644,16 @@ optional-results kind extend union Query = Payload BUILT Type 'Query' is defined optional-results kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results repeat extend type Query { optionalResult: Payload } SchemaError: Type 'Query' declares field 'optionalResult' more than once at line 1, column 21. -optional-results location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. optional-results kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. optional-results kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. optional-results kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. -optional-results location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. optional-results-list seed BUILT -optional-results-list proxy FieldResolverError: Field 'Query.optionalResultList' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery.optionalResultList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery, so every query of the field will fail. +optional-results-list proxy FieldResolverError: Field 'Query.optionalResultList' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery.optionalResultList, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsListQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. optional-results-list kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. optional-results-list kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results-list kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -661,16 +661,16 @@ optional-results-list kind extend union Query = Payload BUILT Type 'Query' is de optional-results-list kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results-list undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results-list repeat extend type Query { optionalResultList: [Payload] } SchemaError: Type 'Query' declares field 'optionalResultList' more than once at line 1, column 21. -optional-results-list location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results-list location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. optional-results-list kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. optional-results-list kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results-list kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. optional-results-list kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results-list undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results-list repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. -optional-results-list location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results-list location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. optional-results-mixed seed BUILT -optional-results-mixed proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery, so every query of the field will fail. +optional-results-mixed proxy FieldResolverError: Field 'Query.optionalResult' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery.optionalResult, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery, so every query of the field will fail. Field 'Query.resultOfOptional' resolves to graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery.resultOfOptional, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionalResultsMixedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. optional-results-mixed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. optional-results-mixed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results-mixed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -678,14 +678,14 @@ optional-results-mixed kind extend union Query = Payload BUILT Type 'Query' is d optional-results-mixed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results-mixed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results-mixed repeat extend type Query { optionalResult: Payload } SchemaError: Type 'Query' declares field 'optionalResult' more than once at line 1, column 21. -optional-results-mixed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +optional-results-mixed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. optional-results-mixed kind extend interface Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an interface. The extension is ignored. optional-results-mixed kind extend input Payload { compatZ: String } BUILT Type 'Payload' is defined as an object type, but extended as an input object type. The extension is ignored. optional-results-mixed kind extend enum Payload { COMPAT_Z } BUILT Type 'Payload' is defined as an object type, but extended as an enum. The extension is ignored. optional-results-mixed kind extend scalar Payload @specifiedBy(url: "https://example.com") BUILT Type 'Payload' is defined as an object type, but extended as a scalar. The extension is ignored. optional-results-mixed undeclared extend type Payload @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. optional-results-mixed repeat extend type Payload { data: String } SchemaError: Type 'Payload' declares field 'data' more than once at line 1, column 23. -optional-results-mixed location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. +optional-results-mixed location extend type Payload @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. optional-results-nested seed SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself optional-results-nested proxy SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself optional-results-nested kind extend interface Query { compatZ: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. @@ -704,16 +704,16 @@ optional-results-nested undeclared extend type Payload @compatUndeclared SchemaC optional-results-nested repeat extend type Payload { data: String } SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself optional-results-nested location extend type Payload @specifiedBy SchemaClassScannerError: Unable to match type definition (Payload) for reference return type of method public final java.util.Optional graphql.kickstart.tools.compat.scenarios.OptionalResultsNestedQuery.optionalResultOfResult() with java type (java.util.Optional>>): graphql.execution.DataFetcherResult cannot be nested within itself options seed BUILT -options proxy FieldResolverError: Field 'Query.name' resolves to graphql.kickstart.tools.compat.scenarios.OptionsQuery.name, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionsQuery, so every query of the field will fail. +options proxy FieldResolverError: Field 'Query.name' resolves to graphql.kickstart.tools.compat.scenarios.OptionsQuery.name, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.OptionsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. options kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. options kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. options kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. options kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. options undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. options repeat extend type Query { name: String! } SchemaError: Type 'Query' declares field 'name' more than once at line 1, column 21. -options location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +options location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. polymorphism seed BUILT -polymorphism proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.PolymorphismQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.PolymorphismQuery, so every query of the field will fail. +polymorphism proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.PolymorphismQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.PolymorphismQuery, so every query of the field will fail. Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.PolymorphismQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.PolymorphismQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. polymorphism kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. polymorphism kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. polymorphism kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -721,7 +721,7 @@ polymorphism kind extend union Query = Novel BUILT Type 'Query' is defined as an polymorphism kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. polymorphism undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. polymorphism repeat extend type Query { node(id: ID!): Node } SchemaError: Type 'Query' declares field 'node' more than once at line 1, column 21. -polymorphism location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +polymorphism location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. polymorphism kind extend type Node { compatZ: String } BUILT Type 'Node' is defined as an interface, but extended as an object type. The extension is ignored. polymorphism kind extend input Node { compatZ: String } BUILT Type 'Node' is defined as an interface, but extended as an input object type. The extension is ignored. polymorphism kind extend enum Node { COMPAT_Z } BUILT Type 'Node' is defined as an interface, but extended as an enum. The extension is ignored. @@ -729,7 +729,7 @@ polymorphism kind extend union Node = Novel BUILT Type 'Node' is defined as an i polymorphism kind extend scalar Node @specifiedBy(url: "https://example.com") BUILT Type 'Node' is defined as an interface, but extended as a scalar. The extension is ignored. polymorphism undeclared extend interface Node @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. polymorphism repeat extend interface Node { id: ID! } SchemaError: Type 'Node' declares field 'id' more than once at line 1, column 25. -polymorphism location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. +polymorphism location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 23 is missing its required argument 'url'. polymorphism kind extend interface Novel { compatZ: String } BUILT Type 'Novel' is defined as an object type, but extended as an interface. The extension is ignored. polymorphism kind extend input Novel { compatZ: String } BUILT Type 'Novel' is defined as an object type, but extended as an input object type. The extension is ignored. polymorphism kind extend enum Novel { COMPAT_Z } BUILT Type 'Novel' is defined as an object type, but extended as an enum. The extension is ignored. @@ -737,7 +737,7 @@ polymorphism kind extend union Novel = Writer BUILT Type 'Novel' is defined as a polymorphism kind extend scalar Novel @specifiedBy(url: "https://example.com") BUILT Type 'Novel' is defined as an object type, but extended as a scalar. The extension is ignored. polymorphism undeclared extend type Novel @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. polymorphism repeat extend type Novel { id: ID! } SchemaError: Type 'Novel' declares field 'id' more than once at line 1, column 21. -polymorphism location extend type Novel @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +polymorphism location extend type Novel @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. polymorphism kind extend interface Writer { compatZ: String } BUILT Type 'Writer' is defined as an object type, but extended as an interface. The extension is ignored. polymorphism kind extend input Writer { compatZ: String } BUILT Type 'Writer' is defined as an object type, but extended as an input object type. The extension is ignored. polymorphism kind extend enum Writer { COMPAT_Z } BUILT Type 'Writer' is defined as an object type, but extended as an enum. The extension is ignored. @@ -745,7 +745,7 @@ polymorphism kind extend union Writer = Novel BUILT Type 'Writer' is defined as polymorphism kind extend scalar Writer @specifiedBy(url: "https://example.com") BUILT Type 'Writer' is defined as an object type, but extended as a scalar. The extension is ignored. polymorphism undeclared extend type Writer @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. polymorphism repeat extend type Writer { id: ID! } SchemaError: Type 'Writer' declares field 'id' more than once at line 1, column 22. -polymorphism location extend type Writer @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +polymorphism location extend type Writer @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. polymorphism kind extend type SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an object type. The extension is ignored. polymorphism kind extend interface SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an interface. The extension is ignored. polymorphism kind extend input SearchResult { compatZ: String } BUILT Type 'SearchResult' is defined as a union, but extended as an input object type. The extension is ignored. @@ -753,9 +753,9 @@ polymorphism kind extend enum SearchResult { COMPAT_Z } BUILT Type 'SearchResult polymorphism kind extend scalar SearchResult @specifiedBy(url: "https://example.com") BUILT Type 'SearchResult' is defined as a union, but extended as a scalar. The extension is ignored. polymorphism undeclared extend union SearchResult @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. polymorphism repeat extend union SearchResult = Novel SchemaError: Type 'SearchResult' declares member 'Novel' more than once at line 1, column 29. -polymorphism location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. +polymorphism location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 27 is missing its required argument 'url'. read-only-schema seed BUILT -read-only-schema proxy FieldResolverError: Field 'Query.animal' resolves to graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery.animal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery, so every query of the field will fail. +read-only-schema proxy FieldResolverError: Field 'Query.animal' resolves to graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery.animal, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery, so every query of the field will fail. Field 'Query.pets' resolves to graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery.pets, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ReadOnlyQuery, so every query of the field will fail. Field 'Mutation.adopt' resolves to graphql.kickstart.tools.compat.scenarios.ReadOnlyMutation.adopt, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ReadOnlyMutation, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. read-only-schema kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. read-only-schema kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. read-only-schema kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -763,9 +763,9 @@ read-only-schema kind extend union Query = Dog BUILT Type 'Query' is defined as read-only-schema kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend type Query { animal(name: String!): Animal } SchemaError: Type 'Query' declares field 'animal' more than once at line 1, column 21. -read-only-schema location extend type Query @tag SchemaError: Directive @tag at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -read-only-schema location extend type Query @contact SchemaError: Directive @contact at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. -read-only-schema location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema location extend type Query @tag SchemaError: Directive @tag at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 19 is missing its required argument 'name'. +read-only-schema location extend type Query @contact SchemaError: Directive @contact at line 1, column 19 is applied to OBJECT, but it's declared on SCHEMA. Directive @contact at line 1, column 19 is missing its required argument 'name'. +read-only-schema location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. read-only-schema kind extend interface Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an interface. The extension is ignored. read-only-schema kind extend input Mutation { compatZ: String } BUILT Type 'Mutation' is defined as an object type, but extended as an input object type. The extension is ignored. read-only-schema kind extend enum Mutation { COMPAT_Z } BUILT Type 'Mutation' is defined as an object type, but extended as an enum. The extension is ignored. @@ -773,9 +773,9 @@ read-only-schema kind extend union Mutation = Dog BUILT Type 'Mutation' is defin read-only-schema kind extend scalar Mutation @specifiedBy(url: "https://example.com") BUILT Type 'Mutation' is defined as an object type, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend type Mutation @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend type Mutation { adopt(name: String!): Animal! } SchemaError: Type 'Mutation' declares field 'adopt' more than once at line 1, column 24. -read-only-schema location extend type Mutation @tag SchemaError: Directive @tag at line 1, column 22 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -read-only-schema location extend type Mutation @contact SchemaError: Directive @contact at line 1, column 22 is applied to OBJECT, but it's declared on SCHEMA. -read-only-schema location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema location extend type Mutation @tag SchemaError: Directive @tag at line 1, column 22 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 22 is missing its required argument 'name'. +read-only-schema location extend type Mutation @contact SchemaError: Directive @contact at line 1, column 22 is applied to OBJECT, but it's declared on SCHEMA. Directive @contact at line 1, column 22 is missing its required argument 'name'. +read-only-schema location extend type Mutation @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 22 is missing its required argument 'url'. read-only-schema kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. read-only-schema kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. read-only-schema kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. @@ -783,9 +783,9 @@ read-only-schema kind extend union Animal = Dog BUILT Type 'Animal' is defined a read-only-schema kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend interface Animal @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend interface Animal { name: String! @tag(name: "public") } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. -read-only-schema location extend interface Animal @tag SchemaError: Directive @tag at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. -read-only-schema location extend interface Animal @contact SchemaError: Directive @contact at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. -read-only-schema location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +read-only-schema location extend interface Animal @tag SchemaError: Directive @tag at line 1, column 25 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 25 is missing its required argument 'name'. +read-only-schema location extend interface Animal @contact SchemaError: Directive @contact at line 1, column 25 is applied to INTERFACE, but it's declared on SCHEMA. Directive @contact at line 1, column 25 is missing its required argument 'name'. +read-only-schema location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. read-only-schema kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. read-only-schema kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. read-only-schema kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. @@ -793,9 +793,9 @@ read-only-schema kind extend union Dog = Cat BUILT Type 'Dog' is defined as an o read-only-schema kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend type Dog @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend type Dog { name: String! @tag(name: "public") } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. -read-only-schema location extend type Dog @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -read-only-schema location extend type Dog @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. -read-only-schema location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema location extend type Dog @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 17 is missing its required argument 'name'. +read-only-schema location extend type Dog @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. Directive @contact at line 1, column 17 is missing its required argument 'name'. +read-only-schema location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. read-only-schema kind extend interface Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an interface. The extension is ignored. read-only-schema kind extend input Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an input object type. The extension is ignored. read-only-schema kind extend enum Cat { COMPAT_Z } BUILT Type 'Cat' is defined as an object type, but extended as an enum. The extension is ignored. @@ -803,9 +803,9 @@ read-only-schema kind extend union Cat = Dog BUILT Type 'Cat' is defined as an o read-only-schema kind extend scalar Cat @specifiedBy(url: "https://example.com") BUILT Type 'Cat' is defined as an object type, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend type Cat @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend type Cat { name: String! @tag(name: "public") } SchemaError: Type 'Cat' declares field 'name' more than once at line 1, column 19. -read-only-schema location extend type Cat @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. -read-only-schema location extend type Cat @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. -read-only-schema location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +read-only-schema location extend type Cat @tag SchemaError: Directive @tag at line 1, column 17 is applied to OBJECT, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 17 is missing its required argument 'name'. +read-only-schema location extend type Cat @contact SchemaError: Directive @contact at line 1, column 17 is applied to OBJECT, but it's declared on SCHEMA. Directive @contact at line 1, column 17 is missing its required argument 'name'. +read-only-schema location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. read-only-schema kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. read-only-schema kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. read-only-schema kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. @@ -813,116 +813,116 @@ read-only-schema kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is defined a read-only-schema kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. read-only-schema undeclared extend union Pet @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. read-only-schema repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. -read-only-schema location extend union Pet @tag SchemaError: Directive @tag at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. -read-only-schema location extend union Pet @contact SchemaError: Directive @contact at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. -read-only-schema location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +read-only-schema location extend union Pet @tag SchemaError: Directive @tag at line 1, column 18 is applied to UNION, but it's declared on FIELD_DEFINITION. Directive @tag at line 1, column 18 is missing its required argument 'name'. +read-only-schema location extend union Pet @contact SchemaError: Directive @contact at line 1, column 18 is applied to UNION, but it's declared on SCHEMA. Directive @contact at line 1, column 18 is missing its required argument 'name'. +read-only-schema location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. recursive-inputs seed BUILT -recursive-inputs proxy FieldResolverError: Field 'Query.describe' resolves to graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery.describe, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery, so every query of the field will fail. +recursive-inputs proxy FieldResolverError: Field 'Query.describe' resolves to graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery.describe, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery, so every query of the field will fail. Field 'Query.names' resolves to graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery.names, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.RecursiveInputsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. recursive-inputs kind extend type LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an object type. The extension is ignored. recursive-inputs kind extend interface LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an interface. The extension is ignored. recursive-inputs kind extend input LimitUnit { compatZ: String } BUILT Type 'LimitUnit' is defined as an enum, but extended as an input object type. The extension is ignored. recursive-inputs kind extend scalar LimitUnit @specifiedBy(url: "https://example.com") BUILT Type 'LimitUnit' is defined as an enum, but extended as a scalar. The extension is ignored. recursive-inputs undeclared extend enum LimitUnit @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. recursive-inputs repeat extend enum LimitUnit { ITEMS } SchemaError: Type 'LimitUnit' declares value 'ITEMS' more than once at line 1, column 25. -recursive-inputs location extend enum LimitUnit @limit SchemaError: Directive @limit at line 1, column 23 is applied to ENUM, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. -recursive-inputs location extend enum LimitUnit @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to ENUM, but it's declared on SCALAR. +recursive-inputs location extend enum LimitUnit @limit SchemaError: Directive @limit at line 1, column 23 is applied to ENUM, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. Directive @limit at line 1, column 23 is missing its required argument 'range'. +recursive-inputs location extend enum LimitUnit @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 23 is missing its required argument 'url'. recursive-inputs kind extend type RangeInput { compatZ: String } BUILT Type 'RangeInput' is defined as an input object type, but extended as an object type. The extension is ignored. recursive-inputs kind extend interface RangeInput { compatZ: String } BUILT Type 'RangeInput' is defined as an input object type, but extended as an interface. The extension is ignored. recursive-inputs kind extend enum RangeInput { COMPAT_Z } BUILT Type 'RangeInput' is defined as an input object type, but extended as an enum. The extension is ignored. recursive-inputs kind extend scalar RangeInput @specifiedBy(url: "https://example.com") BUILT Type 'RangeInput' is defined as an input object type, but extended as a scalar. The extension is ignored. recursive-inputs undeclared extend input RangeInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. recursive-inputs repeat extend input RangeInput { min: Int! } SchemaError: Type 'RangeInput' declares field 'min' more than once at line 1, column 27. -recursive-inputs location extend input RangeInput @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. -recursive-inputs location extend input RangeInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +recursive-inputs location extend input RangeInput @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. Directive @limit at line 1, column 25 is missing its required argument 'range'. +recursive-inputs location extend input RangeInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. recursive-inputs kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. recursive-inputs kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. recursive-inputs kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. recursive-inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. recursive-inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. recursive-inputs repeat extend type Query { describe(filter: TreeFilter!): String! @limit(range: {min : 0, max : 5}, labels: ["a", "b"]) } SchemaError: Type 'Query' declares field 'describe' more than once at line 1, column 21. -recursive-inputs location extend type Query @limit SchemaError: Directive @limit at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. -recursive-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +recursive-inputs location extend type Query @limit SchemaError: Directive @limit at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. Directive @limit at line 1, column 19 is missing its required argument 'range'. +recursive-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. recursive-inputs kind extend type TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an object type. The extension is ignored. recursive-inputs kind extend interface TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an interface. The extension is ignored. recursive-inputs kind extend enum TreeFilter { COMPAT_Z } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an enum. The extension is ignored. recursive-inputs kind extend scalar TreeFilter @specifiedBy(url: "https://example.com") BUILT Type 'TreeFilter' is defined as an input object type, but extended as a scalar. The extension is ignored. recursive-inputs undeclared extend input TreeFilter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. recursive-inputs repeat extend input TreeFilter { name: String } SchemaError: Type 'TreeFilter' declares field 'name' more than once at line 1, column 27. -recursive-inputs location extend input TreeFilter @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. -recursive-inputs location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +recursive-inputs location extend input TreeFilter @limit SchemaError: Directive @limit at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. Directive @limit at line 1, column 25 is missing its required argument 'range'. +recursive-inputs location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. recursive-inputs kind extend type ChildFilter { compatZ: String } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an object type. The extension is ignored. recursive-inputs kind extend interface ChildFilter { compatZ: String } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an interface. The extension is ignored. recursive-inputs kind extend enum ChildFilter { COMPAT_Z } BUILT Type 'ChildFilter' is defined as an input object type, but extended as an enum. The extension is ignored. recursive-inputs kind extend scalar ChildFilter @specifiedBy(url: "https://example.com") BUILT Type 'ChildFilter' is defined as an input object type, but extended as a scalar. The extension is ignored. recursive-inputs undeclared extend input ChildFilter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. recursive-inputs repeat extend input ChildFilter { parent: TreeFilter } SchemaError: Type 'ChildFilter' declares field 'parent' more than once at line 1, column 28. -recursive-inputs location extend input ChildFilter @limit SchemaError: Directive @limit at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. -recursive-inputs location extend input ChildFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on SCALAR. +recursive-inputs location extend input ChildFilter @limit SchemaError: Directive @limit at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION. Directive @limit at line 1, column 26 is missing its required argument 'range'. +recursive-inputs location extend input ChildFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 26 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 26 is missing its required argument 'url'. scalar-args seed BUILT -scalar-args proxy FieldResolverError: Field 'Query.tag' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.tag, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. +scalar-args proxy FieldResolverError: Field 'Query.tag' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.tag, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.tags' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.tags, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.id' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.id, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.nestedSets' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.nestedSets, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.nestedLists' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.nestedLists, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.tokenInput' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.tokenInput, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.markedTokens' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.markedTokens, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.optionalTypedToken' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.optionalTypedToken, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. Field 'Query.optionalIdToken' resolves to graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery.optionalIdToken, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarArgsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. scalar-args kind extend type Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-args kind extend interface Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-args kind extend input Tag { compatZ: String } BUILT Type 'Tag' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-args kind extend enum Tag { COMPAT_Z } BUILT Type 'Tag' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-args undeclared extend scalar Tag @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-args argval extend scalar Tag @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar Tag @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar Tag @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Tag @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar Tag @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar Tag @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-args kind extend type Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-args kind extend interface Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-args kind extend input Token { compatZ: String } BUILT Type 'Token' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-args kind extend enum Token { COMPAT_Z } BUILT Type 'Token' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-args undeclared extend scalar Token @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-args argval extend scalar Token @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar Token @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar Token @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar Token @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar Token @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar Token @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-args kind extend type TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-args kind extend interface TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-args kind extend input TypedToken { compatZ: String } BUILT Type 'TypedToken' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-args kind extend enum TypedToken { COMPAT_Z } BUILT Type 'TypedToken' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-args undeclared extend scalar TypedToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-args argval extend scalar TypedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar TypedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar TypedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar TypedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar TypedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar TypedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-args kind extend type WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-args kind extend interface WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-args kind extend input WrappedToken { compatZ: String } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-args kind extend enum WrappedToken { COMPAT_Z } BUILT Type 'WrappedToken' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-args undeclared extend scalar WrappedToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-args argval extend scalar WrappedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar WrappedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar WrappedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar WrappedToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar WrappedToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar WrappedToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-args kind extend type IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-args kind extend interface IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-args kind extend input IdToken { compatZ: String } BUILT Type 'IdToken' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-args kind extend enum IdToken { COMPAT_Z } BUILT Type 'IdToken' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-args undeclared extend scalar IdToken @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-args argval extend scalar IdToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar IdToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-args argval extend scalar IdToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-args argval extend scalar IdToken @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar IdToken @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-args argval extend scalar IdToken @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-args kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. scalar-args kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. scalar-args kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. scalar-args kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. scalar-args undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. scalar-args repeat extend type Query { tag(tag: Tag!): String! } SchemaError: Type 'Query' declares field 'tag' more than once at line 1, column 21. -scalar-args location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +scalar-args location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. scalar-args kind extend type TokenInput { compatZ: String } BUILT Type 'TokenInput' is defined as an input object type, but extended as an object type. The extension is ignored. scalar-args kind extend interface TokenInput { compatZ: String } BUILT Type 'TokenInput' is defined as an input object type, but extended as an interface. The extension is ignored. scalar-args kind extend enum TokenInput { COMPAT_Z } BUILT Type 'TokenInput' is defined as an input object type, but extended as an enum. The extension is ignored. scalar-args kind extend scalar TokenInput @specifiedBy(url: "https://example.com") BUILT Type 'TokenInput' is defined as an input object type, but extended as a scalar. The extension is ignored. scalar-args undeclared extend input TokenInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. scalar-args repeat extend input TokenInput { token: Token } SchemaError: Type 'TokenInput' declares field 'token' more than once at line 1, column 27. -scalar-args location extend input TokenInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +scalar-args location extend input TokenInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. scalar-args kind extend type MarkedTokensInput { compatZ: String } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an object type. The extension is ignored. scalar-args kind extend interface MarkedTokensInput { compatZ: String } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an interface. The extension is ignored. scalar-args kind extend enum MarkedTokensInput { COMPAT_Z } BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as an enum. The extension is ignored. scalar-args kind extend scalar MarkedTokensInput @specifiedBy(url: "https://example.com") BUILT Type 'MarkedTokensInput' is defined as an input object type, but extended as a scalar. The extension is ignored. scalar-args undeclared extend input MarkedTokensInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. scalar-args repeat extend input MarkedTokensInput { typed: TypedToken } SchemaError: Type 'MarkedTokensInput' declares field 'typed' more than once at line 1, column 34. -scalar-args location extend input MarkedTokensInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 32 is applied to INPUT_OBJECT, but it's declared on SCALAR. +scalar-args location extend input MarkedTokensInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 32 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 32 is missing its required argument 'url'. scalar-directives seed BUILT -scalar-directives proxy FieldResolverError: Field 'Query.today' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.today, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. +scalar-directives proxy FieldResolverError: Field 'Query.today' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.today, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. Field 'Query.now' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.now, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. Field 'Query.shift' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.shift, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. Field 'Query.price' resolves to graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery.price, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ScalarDirectivesQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. scalar-directives kind extend type Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-directives kind extend interface Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-directives kind extend input Date { compatZ: String } BUILT Type 'Date' is defined as a scalar, but extended as an input object type. The extension is ignored. @@ -942,29 +942,29 @@ scalar-directives kind extend interface DateTime { compatZ: String } BUILT Type scalar-directives kind extend input DateTime { compatZ: String } BUILT Type 'DateTime' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-directives kind extend enum DateTime { COMPAT_Z } BUILT Type 'DateTime' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-directives undeclared extend scalar DateTime @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-directives argval extend scalar DateTime @since(date: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @since(date: 5) InvalidSchemaException: invalid schema: Invalid argument 'date' for applied directive of name 'since' scalar-directives argval extend scalar DateTime @since(date: "x") BUILT scalar-directives repeat-directive extend scalar DateTime @since @since SchemaError: Directive @since at line 1, column 31 isn't repeatable but is applied more than once. -scalar-directives argval extend scalar DateTime @unit(name: 5) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar DateTime @unit(name: NOPE) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar DateTime @unit(name: null) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar DateTime @unit(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar DateTime @unit(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar DateTime @unit(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar DateTime @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-directives argval extend scalar DateTime @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-directives argval extend scalar DateTime @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-directives kind extend type Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an object type. The extension is ignored. scalar-directives kind extend interface Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an interface. The extension is ignored. scalar-directives kind extend input Money { compatZ: String } BUILT Type 'Money' is defined as a scalar, but extended as an input object type. The extension is ignored. scalar-directives kind extend enum Money { COMPAT_Z } BUILT Type 'Money' is defined as a scalar, but extended as an enum. The extension is ignored. scalar-directives undeclared extend scalar Money @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. -scalar-directives argval extend scalar Money @since(date: 5) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @since(date: 5) InvalidSchemaException: invalid schema: Invalid argument 'date' for applied directive of name 'since' scalar-directives argval extend scalar Money @since(date: "x") BUILT scalar-directives repeat-directive extend scalar Money @since @since SchemaError: Directive @since at line 1, column 28 isn't repeatable but is applied more than once. -scalar-directives argval extend scalar Money @unit(name: 5) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar Money @unit(name: NOPE) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar Money @unit(name: null) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: -scalar-directives argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: +scalar-directives argval extend scalar Money @unit(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar Money @unit(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar Money @unit(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'unit' +scalar-directives argval extend scalar Money @specifiedBy(url: 5) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-directives argval extend scalar Money @specifiedBy(url: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' +scalar-directives argval extend scalar Money @specifiedBy(url: null) InvalidSchemaException: invalid schema: Invalid argument 'url' for applied directive of name 'specifiedBy' scalar-directives kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. scalar-directives kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. scalar-directives kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -972,10 +972,10 @@ scalar-directives kind extend scalar Query @specifiedBy(url: "https://example.co scalar-directives undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. scalar-directives repeat extend type Query { today: Date @since(date: "2021-01-01") } SchemaError: Type 'Query' declares field 'today' more than once at line 1, column 21. scalar-directives location extend type Query @since SchemaError: Directive @since at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR | FIELD_DEFINITION. -scalar-directives location extend type Query @unit SchemaError: Directive @unit at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. -scalar-directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +scalar-directives location extend type Query @unit SchemaError: Directive @unit at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @unit at line 1, column 19 is missing its required argument 'name'. +scalar-directives location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. sourceless seed BUILT -sourceless proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. +sourceless proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. Field 'Folder.images' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver.images, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver, so every query of the field will fail. Field 'Image.imageBlob' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.imageBlob, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. Field 'Image.thumbnail' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.thumbnail, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. Field 'Image.owner' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.owner, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. Field 'Image.locale' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.locale, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. Field 'Image.signature' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.signature, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. Field 'Image.caption' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver.caption, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessImageResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. sourceless kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. sourceless kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -983,7 +983,7 @@ sourceless kind extend union Query = Folder BUILT Type 'Query' is defined as an sourceless kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. -sourceless location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. sourceless kind extend interface Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. sourceless kind extend input Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless kind extend enum Folder { COMPAT_Z } BUILT Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. @@ -991,7 +991,7 @@ sourceless kind extend union Folder = Image BUILT Type 'Folder' is defined as an sourceless kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless repeat extend type Folder { supportedFileTypes: [String!]! } SchemaError: Type 'Folder' declares field 'supportedFileTypes' more than once at line 1, column 22. -sourceless location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +sourceless location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. sourceless kind extend interface Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. sourceless kind extend input Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless kind extend enum Image { COMPAT_Z } BUILT Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. @@ -999,35 +999,35 @@ sourceless kind extend union Image = Folder BUILT Type 'Image' is defined as an sourceless kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. -sourceless location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. -sourceless-misbound seed FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound proxy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. -sourceless-misbound kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. -sourceless-misbound kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. -sourceless-misbound kind extend union Query = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. -sourceless-misbound kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. -sourceless-misbound undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound repeat extend type Query { folder: Folder! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound kind extend interface Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. -sourceless-misbound kind extend input Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. -sourceless-misbound kind extend enum Folder { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. -sourceless-misbound kind extend union Folder = Image FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. -sourceless-misbound kind extend scalar Folder @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. -sourceless-misbound undeclared extend type Folder @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound repeat extend type Folder { images: [Image!]! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound location extend type Folder @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound kind extend interface Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. -sourceless-misbound kind extend input Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. -sourceless-misbound kind extend enum Image { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. -sourceless-misbound kind extend union Image = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. -sourceless-misbound kind extend scalar Image @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. -sourceless-misbound undeclared extend type Image @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound repeat extend type Image { name: String! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: -sourceless-misbound location extend type Image @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: +sourceless location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. +sourceless-misbound seed FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound proxy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound kind extend interface Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Query { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Query { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Query = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Query' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Query @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Query @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound repeat extend type Query { folder: Folder! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound location extend type Query @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound kind extend interface Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Folder { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Folder { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Folder = Image FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Folder' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Folder @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Folder @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound repeat extend type Folder { images: [Image!]! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound location extend type Folder @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound kind extend interface Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. +sourceless-misbound kind extend input Image { compatZ: String } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. +sourceless-misbound kind extend enum Image { COMPAT_Z } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. +sourceless-misbound kind extend union Image = Folder FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Image' is defined as an object type, but extended as a union. The extension is ignored. +sourceless-misbound kind extend scalar Image @specifiedBy(url: "https://example.com") FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. +sourceless-misbound undeclared extend type Image @compatUndeclared FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound repeat extend type Image { name: String! } FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) +sourceless-misbound location extend type Image @specifiedBy FieldResolverError: No method found as defined in schema compat/scenarios/sourceless-misbound/schema.graphqls:11 with any of the following signatures (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext]), in priority order: graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(graphql.kickstart.tools.compat.scenarios.SourcelessImage, ~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.thumbnail(~size) graphql.kickstart.tools.compat.scenarios.SourcelessImage.getThumbnail(~size) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, ) graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, ) sourceless-shadowed seed BUILT -sourceless-shadowed proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. +sourceless-shadowed proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. Field 'Folder.images' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver.images, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver, so every query of the field will fail. Field 'Image.title' resolves to graphql.kickstart.tools.compat.scenarios.ShadowedImageResolver.title, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.ShadowedImageResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. sourceless-shadowed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-shadowed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-shadowed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1035,7 +1035,7 @@ sourceless-shadowed kind extend union Query = Folder BUILT Type 'Query' is defin sourceless-shadowed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-shadowed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless-shadowed repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. -sourceless-shadowed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless-shadowed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. sourceless-shadowed kind extend interface Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-shadowed kind extend input Folder { compatZ: String } BUILT Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-shadowed kind extend enum Folder { COMPAT_Z } BUILT Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1043,7 +1043,7 @@ sourceless-shadowed kind extend union Folder = Image BUILT Type 'Folder' is defi sourceless-shadowed kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-shadowed undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless-shadowed repeat extend type Folder { images: [Image!]! } SchemaError: Type 'Folder' declares field 'images' more than once at line 1, column 22. -sourceless-shadowed location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +sourceless-shadowed location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. sourceless-shadowed kind extend interface Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-shadowed kind extend input Image { compatZ: String } BUILT Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-shadowed kind extend enum Image { COMPAT_Z } BUILT Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1051,9 +1051,9 @@ sourceless-shadowed kind extend union Image = Folder BUILT Type 'Image' is defin sourceless-shadowed kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-shadowed undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. sourceless-shadowed repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. -sourceless-shadowed location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +sourceless-shadowed location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. sourceless-unimplemented seed BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. -sourceless-unimplemented proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented proxy FieldResolverError: Field 'Query.folder' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessQuery.folder, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessQuery, so every query of the field will fail. Field 'Folder.images' resolves to graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver.images, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.SourcelessFolderResolver, so every query of the field will fail. Field 'Image.imageBlob' resolves to graphql.kickstart.tools.compat.scenarios.HelperImageResolver.imageBlob, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.HelperImageResolver, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented kind extend interface Query { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-unimplemented kind extend input Query { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-unimplemented kind extend enum Query { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1061,7 +1061,7 @@ sourceless-unimplemented kind extend union Query = Folder BUILT Missing resolver sourceless-unimplemented kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-unimplemented undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented repeat extend type Query { folder: Folder! } SchemaError: Type 'Query' declares field 'folder' more than once at line 1, column 21. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. -sourceless-unimplemented location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented kind extend interface Folder { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-unimplemented kind extend input Folder { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-unimplemented kind extend enum Folder { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1069,7 +1069,7 @@ sourceless-unimplemented kind extend union Folder = Image BUILT Missing resolver sourceless-unimplemented kind extend scalar Folder @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Folder' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-unimplemented undeclared extend type Folder @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented repeat extend type Folder { images: [Image!]! } SchemaError: Type 'Folder' declares field 'images' more than once at line 1, column 22. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. -sourceless-unimplemented location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Folder @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented kind extend interface Image { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an interface. The extension is ignored. sourceless-unimplemented kind extend input Image { compatZ: String } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an input object type. The extension is ignored. sourceless-unimplemented kind extend enum Image { COMPAT_Z } BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1077,9 +1077,9 @@ sourceless-unimplemented kind extend union Image = Folder BUILT Missing resolver sourceless-unimplemented kind extend scalar Image @specifiedBy(url: "https://example.com") BUILT Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. Type 'Image' is defined as an object type, but extended as a scalar. The extension is ignored. sourceless-unimplemented undeclared extend type Image @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. sourceless-unimplemented repeat extend type Image { name: String! } SchemaError: Type 'Image' declares field 'name' more than once at line 1, column 21. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. -sourceless-unimplemented location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. +sourceless-unimplemented location extend type Image @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Missing resolver for field: FieldDefinition{name='preview', type=TypeName{name='String'}, inputValueDefinitions=[], directives=[]} Option 'allowUnimplementedResolvers' should only be set to true during development, as it can cause schema errors to be moved to query time instead of schema creation time. Make sure this is turned off in production. type-extensions seed BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions proxy FieldResolverError: Field 'Query.node' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.node, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Field 'Query.search' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.search, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Field 'Query.colors' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.colors, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Field 'Query.shades' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.shades, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions kind extend input Query { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions kind extend enum Query { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1087,13 +1087,13 @@ type-extensions kind extend union Query = Article BUILT Schema type was defined type-extensions kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend type Query { node(id: ID!): Node } SchemaError: Type 'Query' declares field 'node' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @owner(team: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @owner(team: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Query @owner(team: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: 5) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Query @owner(team: null) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend type Node { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend input Node { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend enum Node { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. @@ -1101,11 +1101,11 @@ type-extensions kind extend union Node = Article BUILT Schema type was defined b type-extensions kind extend scalar Node @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Node' is defined as an interface, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions undeclared extend interface Node @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend interface Node { "The base id" id: ID! } SchemaError: Type 'Node' declares field 'id' more than once at line 1, column 25. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend interface Node @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend interface Node @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend interface Node @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend interface Node @owner SchemaError: Directive @owner at line 1, column 23 is applied to INTERFACE, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend interface Node @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend interface Node @owner SchemaError: Directive @owner at line 1, column 23 is applied to INTERFACE, but it's declared on OBJECT. Directive @owner at line 1, column 23 is missing its required argument 'team'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend interface Node @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 23 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 23 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Article { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend input Article { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend enum Article { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. @@ -1113,13 +1113,13 @@ type-extensions kind extend union Article = Video BUILT Schema type was defined type-extensions kind extend scalar Article @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Article' is defined as an object type, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions undeclared extend type Article @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend type Article { id: ID! } SchemaError: Type 'Article' declares field 'id' more than once at line 1, column 23. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Article @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Article @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Article @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Article @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions argval extend type Article @owner(team: 5) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions argval extend type Article @owner(team: NOPE) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions argval extend type Article @owner(team: null) SchemaError: Directive @owner at line 1, column 21 isn't repeatable but is applied more than once. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend type Article @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Article @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Video { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions kind extend input Video { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions kind extend enum Video { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1127,13 +1127,13 @@ type-extensions kind extend union Video = Article BUILT Schema type was defined type-extensions kind extend scalar Video @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Video' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions undeclared extend type Video @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend type Video { id: ID! } SchemaError: Type 'Video' declares field 'id' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @owner(team: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @owner(team: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend type Video @owner(team: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend type Video @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: 5) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend type Video @owner(team: null) InvalidSchemaException: invalid schema: Invalid argument 'team' for applied directive of name 'owner' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend type Video @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend type SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an object type. The extension is ignored. type-extensions kind extend interface SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an interface. The extension is ignored. type-extensions kind extend input SearchResult { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as an input object type. The extension is ignored. @@ -1141,11 +1141,11 @@ type-extensions kind extend enum SearchResult { COMPAT_Z } BUILT Schema type was type-extensions kind extend scalar SearchResult @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'SearchResult' is defined as a union, but extended as a scalar. The extension is ignored. type-extensions undeclared extend union SearchResult @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend union SearchResult = Article SchemaError: Type 'SearchResult' declares member 'Article' more than once at line 1, column 29. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend union SearchResult @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend union SearchResult @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend union SearchResult @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend union SearchResult @owner SchemaError: Directive @owner at line 1, column 27 is applied to UNION, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend union SearchResult @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend union SearchResult @owner SchemaError: Directive @owner at line 1, column 27 is applied to UNION, but it's declared on OBJECT. Directive @owner at line 1, column 27 is missing its required argument 'team'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend union SearchResult @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 27 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend type Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend input Color { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as an input object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. @@ -1153,11 +1153,11 @@ type-extensions kind extend union Color = Article BUILT Schema type was defined type-extensions kind extend scalar Color @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Color' is defined as an enum, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions undeclared extend enum Color @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend enum Color { RED } SchemaError: Type 'Color' declares value 'RED' more than once at line 1, column 21. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend enum Color @owner SchemaError: Directive @owner at line 1, column 19 is applied to ENUM, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend enum Color @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend enum Color @owner SchemaError: Directive @owner at line 1, column 19 is applied to ENUM, but it's declared on OBJECT. Directive @owner at line 1, column 19 is missing its required argument 'team'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend enum Color @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend type Filter { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an object type. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Filter { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an interface. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend enum Filter { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as an enum. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. @@ -1165,11 +1165,11 @@ type-extensions kind extend union Filter = Article BUILT Schema type was defined type-extensions kind extend scalar Filter @specifiedBy(url: "https://example.com") BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Filter' is defined as an input object type, but extended as a scalar. The extension is ignored. Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions undeclared extend input Filter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions repeat extend input Filter { term: String } SchemaError: Type 'Filter' declares field 'term' more than once at line 1, column 23. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend input Filter @tag(name: 5) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend input Filter @tag(name: NOPE) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions argval extend input Filter @tag(name: null) InvalidSchemaException: invalid schema: Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend input Filter @owner SchemaError: Directive @owner at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on OBJECT. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. -type-extensions location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: 5) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: NOPE) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions argval extend input Filter @tag(name: null) InvalidSchemaException: invalid schema: Invalid argument 'name' for applied directive of name 'tag' Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend input Filter @owner SchemaError: Directive @owner at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on OBJECT. Directive @owner at line 1, column 21 is missing its required argument 'team'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. +type-extensions location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions kind extend interface Note { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions kind extend input Note { compatZ: String } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions kind extend enum Note { COMPAT_Z } BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. Type 'Note' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1185,23 +1185,23 @@ type-extensions argval extend type Note @owner(team: NOPE) BUILT Schema type was type-extensions argval extend type Note @owner(team: null) BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions location extend type Note @specifiedBy BUILT Schema type was defined but can never be accessed, and can be safely deleted: Note Type 'Note' is defined as an object type, but extended as a union. The extension is ignored. type-extensions-input-order seed BUILT -type-extensions-input-order proxy FieldResolverError: Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery, so every query of the field will fail. +type-extensions-input-order proxy FieldResolverError: Field 'Query.count' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery.count, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsInputOrderQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. type-extensions-input-order kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-input-order kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-input-order kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. type-extensions-input-order kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-input-order undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-input-order repeat extend type Query { count(filter: Filter): Int! } SchemaError: Type 'Query' declares field 'count' more than once at line 1, column 21. -type-extensions-input-order location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-input-order location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. type-extensions-input-order kind extend type Filter { compatZ: String } BUILT Type 'Filter' is defined as an input object type, but extended as an object type. The extension is ignored. type-extensions-input-order kind extend interface Filter { compatZ: String } BUILT Type 'Filter' is defined as an input object type, but extended as an interface. The extension is ignored. type-extensions-input-order kind extend enum Filter { COMPAT_Z } BUILT Type 'Filter' is defined as an input object type, but extended as an enum. The extension is ignored. type-extensions-input-order kind extend scalar Filter @specifiedBy(url: "https://example.com") BUILT Type 'Filter' is defined as an input object type, but extended as a scalar. The extension is ignored. type-extensions-input-order undeclared extend input Filter @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-input-order repeat extend input Filter { term: String } SchemaError: Type 'Filter' declares field 'term' more than once at line 1, column 23. -type-extensions-input-order location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. +type-extensions-input-order location extend input Filter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 21 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 21 is missing its required argument 'url'. type-extensions-repeated-fields seed SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. -type-extensions-repeated-fields proxy FieldResolverError: Field 'Query.typeAndExtension' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.typeAndExtension, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. +type-extensions-repeated-fields proxy FieldResolverError: Field 'Query.typeAndExtension' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.typeAndExtension, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. Field 'Query.twoExtensions' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.twoExtensions, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. Field 'Query.oneDefinition' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.oneDefinition, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. Field 'Query.echo' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery.echo, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsRepeatedFieldsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. type-extensions-repeated-fields kind extend interface Query { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-repeated-fields kind extend input Query { compatZ: String } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-repeated-fields kind extend enum Query { COMPAT_Z } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1259,7 +1259,7 @@ type-extensions-repeated-fields undeclared extend input InputOneDefinition @comp type-extensions-repeated-fields repeat extend input InputOneDefinition { "The first" id: ID } SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. type-extensions-repeated-fields location extend input InputOneDefinition @specifiedBy SchemaError: Type 'InputTypeAndExtension' declares field 'id' more than once at line 49, column 5 in compat/scenarios/type-extensions-repeated-fields/schema.graphqls. type-extensions-sealed seed BUILT -type-extensions-sealed proxy FieldResolverError: Field 'Query.pets' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery.pets, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery, so every query of the field will fail. +type-extensions-sealed proxy FieldResolverError: Field 'Query.pets' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery.pets, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery, so every query of the field will fail. Field 'Query.animals' resolves to graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery.animals, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.TypeExtensionsSealedQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. type-extensions-sealed kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1267,7 +1267,7 @@ type-extensions-sealed kind extend union Query = Dog BUILT Type 'Query' is defin type-extensions-sealed kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend type Query { pets: [Pet!]! } SchemaError: Type 'Query' declares field 'pets' more than once at line 1, column 21. -type-extensions-sealed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. type-extensions-sealed kind extend type Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an object type. The extension is ignored. type-extensions-sealed kind extend interface Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Pet { compatZ: String } BUILT Type 'Pet' is defined as a union, but extended as an input object type. The extension is ignored. @@ -1275,7 +1275,7 @@ type-extensions-sealed kind extend enum Pet { COMPAT_Z } BUILT Type 'Pet' is def type-extensions-sealed kind extend scalar Pet @specifiedBy(url: "https://example.com") BUILT Type 'Pet' is defined as a union, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend union Pet @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend union Pet = Dog SchemaError: Type 'Pet' declares member 'Dog' more than once at line 1, column 20. -type-extensions-sealed location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. +type-extensions-sealed location extend union Pet @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 18 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 18 is missing its required argument 'url'. type-extensions-sealed kind extend interface Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Dog { compatZ: String } BUILT Type 'Dog' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Dog { COMPAT_Z } BUILT Type 'Dog' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1283,7 +1283,7 @@ type-extensions-sealed kind extend union Dog = Cat BUILT Type 'Dog' is defined a type-extensions-sealed kind extend scalar Dog @specifiedBy(url: "https://example.com") BUILT Type 'Dog' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend type Dog @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend type Dog { name: String } SchemaError: Type 'Dog' declares field 'name' more than once at line 1, column 19. -type-extensions-sealed location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed location extend type Dog @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. type-extensions-sealed kind extend interface Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Cat { compatZ: String } BUILT Type 'Cat' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Cat { COMPAT_Z } BUILT Type 'Cat' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1291,7 +1291,7 @@ type-extensions-sealed kind extend union Cat = Dog BUILT Type 'Cat' is defined a type-extensions-sealed kind extend scalar Cat @specifiedBy(url: "https://example.com") BUILT Type 'Cat' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend type Cat @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend type Cat { lives: Int } SchemaError: Type 'Cat' declares field 'lives' more than once at line 1, column 19. -type-extensions-sealed location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed location extend type Cat @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. type-extensions-sealed kind extend type Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an object type. The extension is ignored. type-extensions-sealed kind extend input Animal { compatZ: String } BUILT Type 'Animal' is defined as an interface, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Animal { COMPAT_Z } BUILT Type 'Animal' is defined as an interface, but extended as an enum. The extension is ignored. @@ -1299,7 +1299,7 @@ type-extensions-sealed kind extend union Animal = Dog BUILT Type 'Animal' is def type-extensions-sealed kind extend scalar Animal @specifiedBy(url: "https://example.com") BUILT Type 'Animal' is defined as an interface, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend interface Animal @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend interface Animal { name: String } SchemaError: Type 'Animal' declares field 'name' more than once at line 1, column 27. -type-extensions-sealed location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. +type-extensions-sealed location extend interface Animal @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. type-extensions-sealed kind extend interface Cow { compatZ: String } BUILT Type 'Cow' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Cow { compatZ: String } BUILT Type 'Cow' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Cow { COMPAT_Z } BUILT Type 'Cow' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1307,7 +1307,7 @@ type-extensions-sealed kind extend union Cow = Dog BUILT Type 'Cow' is defined a type-extensions-sealed kind extend scalar Cow @specifiedBy(url: "https://example.com") BUILT Type 'Cow' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend type Cow @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend type Cow { name: String } SchemaError: Type 'Cow' declares field 'name' more than once at line 1, column 19. -type-extensions-sealed location extend type Cow @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed location extend type Cow @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 17 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 17 is missing its required argument 'url'. type-extensions-sealed kind extend interface Horse { compatZ: String } BUILT Type 'Horse' is defined as an object type, but extended as an interface. The extension is ignored. type-extensions-sealed kind extend input Horse { compatZ: String } BUILT Type 'Horse' is defined as an object type, but extended as an input object type. The extension is ignored. type-extensions-sealed kind extend enum Horse { COMPAT_Z } BUILT Type 'Horse' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1315,46 +1315,46 @@ type-extensions-sealed kind extend union Horse = Dog BUILT Type 'Horse' is defin type-extensions-sealed kind extend scalar Horse @specifiedBy(url: "https://example.com") BUILT Type 'Horse' is defined as an object type, but extended as a scalar. The extension is ignored. type-extensions-sealed undeclared extend type Horse @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. type-extensions-sealed repeat extend type Horse { name: String } SchemaError: Type 'Horse' declares field 'name' more than once at line 1, column 21. -type-extensions-sealed location extend type Horse @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +type-extensions-sealed location extend type Horse @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. unmapped-inputs seed BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. -unmapped-inputs proxy FieldResolverError: Field 'Query.ignored' resolves to graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery.ignored, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery, so every query of the field will fail. +unmapped-inputs proxy FieldResolverError: Field 'Query.ignored' resolves to graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery.ignored, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery, so every query of the field will fail. Field 'Query.typo' resolves to graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery.typo, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.UnmappedInputsQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. unmapped-inputs kind extend interface Query { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. unmapped-inputs kind extend input Query { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. unmapped-inputs kind extend enum Query { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. unmapped-inputs kind extend scalar Query @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'Query' is defined as an object type, but extended as a scalar. The extension is ignored. unmapped-inputs undeclared extend type Query @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. unmapped-inputs repeat extend type Query { ignored(input: IgnoredInput!): String } SchemaError: Type 'Query' declares field 'ignored' more than once at line 1, column 21. -unmapped-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +unmapped-inputs location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. unmapped-inputs kind extend type IgnoredInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an object type. The extension is ignored. unmapped-inputs kind extend interface IgnoredInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an interface. The extension is ignored. unmapped-inputs kind extend enum IgnoredInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as an enum. The extension is ignored. unmapped-inputs kind extend scalar IgnoredInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'IgnoredInput' is defined as an input object type, but extended as a scalar. The extension is ignored. unmapped-inputs undeclared extend input IgnoredInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. unmapped-inputs repeat extend input IgnoredInput { inner: InnerInput } SchemaError: Type 'IgnoredInput' declares field 'inner' more than once at line 1, column 29. -unmapped-inputs location extend input IgnoredInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs location extend input IgnoredInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 27 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 27 is missing its required argument 'url'. unmapped-inputs kind extend type InnerInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an object type. The extension is ignored. unmapped-inputs kind extend interface InnerInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an interface. The extension is ignored. unmapped-inputs kind extend enum InnerInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as an enum. The extension is ignored. unmapped-inputs kind extend scalar InnerInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'InnerInput' is defined as an input object type, but extended as a scalar. The extension is ignored. unmapped-inputs undeclared extend input InnerInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. unmapped-inputs repeat extend input InnerInput { name: String } SchemaError: Type 'InnerInput' declares field 'name' more than once at line 1, column 27. -unmapped-inputs location extend input InnerInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs location extend input InnerInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. unmapped-inputs kind extend type TypoInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an object type. The extension is ignored. unmapped-inputs kind extend interface TypoInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an interface. The extension is ignored. unmapped-inputs kind extend enum TypoInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as an enum. The extension is ignored. unmapped-inputs kind extend scalar TypoInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'TypoInput' is defined as an input object type, but extended as a scalar. The extension is ignored. unmapped-inputs undeclared extend input TypoInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. unmapped-inputs repeat extend input TypoInput { item: ItemInput } SchemaError: Type 'TypoInput' declares field 'item' more than once at line 1, column 26. -unmapped-inputs location extend input TypoInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs location extend input TypoInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 24 is missing its required argument 'url'. unmapped-inputs kind extend type ItemInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an object type. The extension is ignored. unmapped-inputs kind extend interface ItemInput { compatZ: String } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an interface. The extension is ignored. unmapped-inputs kind extend enum ItemInput { COMPAT_Z } BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as an enum. The extension is ignored. unmapped-inputs kind extend scalar ItemInput @specifiedBy(url: "https://example.com") BUILT Input field 'ItemInput.name' has no matching property in graphql.kickstart.tools.compat.scenarios.ItemInput. Converting argument 'input' of field 'Query.typo' fails whenever the field is sent. Known properties: nmae. Rename the property or map it with @JsonProperty("name"). If it's left unmapped on purpose, list it in @JsonIgnoreProperties on the class. Type 'ItemInput' is defined as an input object type, but extended as a scalar. The extension is ignored. unmapped-inputs undeclared extend input ItemInput @compatUndeclared SchemaError: Found applied directive compatUndeclared without corresponding directive definition. unmapped-inputs repeat extend input ItemInput { name: String } SchemaError: Type 'ItemInput' declares field 'name' more than once at line 1, column 26. -unmapped-inputs location extend input ItemInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. +unmapped-inputs location extend input ItemInput @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 24 is missing its required argument 'url'. wiring-shapes seed BUILT -wiring-shapes proxy FieldResolverError: Field 'Query.trees' resolves to graphql.kickstart.tools.compat.scenarios.WiringShapesQuery.trees, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.WiringShapesQuery, so every query of the field will fail. +wiring-shapes proxy FieldResolverError: Field 'Query.trees' resolves to graphql.kickstart.tools.compat.scenarios.WiringShapesQuery.trees, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.WiringShapesQuery, so every query of the field will fail. Field 'Query.person' resolves to graphql.kickstart.tools.compat.scenarios.WiringShapesQuery.person, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.WiringShapesQuery, so every query of the field will fail. Field 'Query.someone' resolves to graphql.kickstart.tools.compat.scenarios.WiringShapesQuery.someone, but the resolver is a jdk.proxyN.$ProxyN, which isn't a graphql.kickstart.tools.compat.scenarios.WiringShapesQuery, so every query of the field will fail. This happens with JDK dynamic proxies, which only implement interfaces. Use class-based proxies instead, e.g. proxyTargetClass = true in Spring. wiring-shapes kind extend interface Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an interface. The extension is ignored. wiring-shapes kind extend input Query { compatZ: String } BUILT Type 'Query' is defined as an object type, but extended as an input object type. The extension is ignored. wiring-shapes kind extend enum Query { COMPAT_Z } BUILT Type 'Query' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1365,7 +1365,7 @@ wiring-shapes repeat extend type Query { trees(filter: TreeFilter): Int } Schema wiring-shapes location extend type Query @inspect SchemaError: Directive @inspect at line 1, column 19 is applied to OBJECT, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend type Query @required SchemaError: Directive @required at line 1, column 19 is applied to OBJECT, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend type Query @described @described SchemaError: Directive @described at line 1, column 30 isn't repeatable but is applied more than once. -wiring-shapes location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. +wiring-shapes location extend type Query @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. wiring-shapes kind extend type TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an object type. The extension is ignored. wiring-shapes kind extend interface TreeFilter { compatZ: String } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an interface. The extension is ignored. wiring-shapes kind extend enum TreeFilter { COMPAT_Z } BUILT Type 'TreeFilter' is defined as an input object type, but extended as an enum. The extension is ignored. @@ -1376,7 +1376,7 @@ wiring-shapes repeat extend input TreeFilter { name: String } SchemaError: Type wiring-shapes location extend input TreeFilter @inspect SchemaError: Directive @inspect at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend input TreeFilter @required SchemaError: Directive @required at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend input TreeFilter @described @described SchemaError: Directive @described at line 1, column 25 isn't repeatable but is applied more than once. -wiring-shapes location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. +wiring-shapes location extend input TreeFilter @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 25 is applied to INPUT_OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 25 is missing its required argument 'url'. wiring-shapes kind extend type Named { compatZ: String } BUILT Type 'Named' is defined as an interface, but extended as an object type. The extension is ignored. wiring-shapes kind extend input Named { compatZ: String } BUILT Type 'Named' is defined as an interface, but extended as an input object type. The extension is ignored. wiring-shapes kind extend enum Named { COMPAT_Z } BUILT Type 'Named' is defined as an interface, but extended as an enum. The extension is ignored. @@ -1387,7 +1387,7 @@ wiring-shapes repeat extend interface Named { name: String } SchemaError: Type ' wiring-shapes location extend interface Named @inspect SchemaError: Directive @inspect at line 1, column 24 is applied to INTERFACE, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend interface Named @required SchemaError: Directive @required at line 1, column 24 is applied to INTERFACE, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend interface Named @described @described SchemaError: Directive @described at line 1, column 24 isn't repeatable but is applied more than once. -wiring-shapes location extend interface Named @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INTERFACE, but it's declared on SCALAR. +wiring-shapes location extend interface Named @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 24 is applied to INTERFACE, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 24 is missing its required argument 'url'. wiring-shapes kind extend interface Person { compatZ: String } BUILT Type 'Person' is defined as an object type, but extended as an interface. The extension is ignored. wiring-shapes kind extend input Person { compatZ: String } BUILT Type 'Person' is defined as an object type, but extended as an input object type. The extension is ignored. wiring-shapes kind extend enum Person { COMPAT_Z } BUILT Type 'Person' is defined as an object type, but extended as an enum. The extension is ignored. @@ -1397,7 +1397,7 @@ wiring-shapes repeat extend type Person { name: String } SchemaError: Type 'Pers wiring-shapes location extend type Person @inspect SchemaError: Directive @inspect at line 1, column 20 is applied to OBJECT, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend type Person @required SchemaError: Directive @required at line 1, column 20 is applied to OBJECT, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend type Person @described @described SchemaError: Directive @described at line 1, column 20 isn't repeatable but is applied more than once. -wiring-shapes location extend type Person @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. +wiring-shapes location extend type Person @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 20 is applied to OBJECT, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 20 is missing its required argument 'url'. wiring-shapes kind extend type Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an object type. The extension is ignored. wiring-shapes kind extend interface Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an interface. The extension is ignored. wiring-shapes kind extend input Someone { compatZ: String } BUILT Type 'Someone' is defined as a union, but extended as an input object type. The extension is ignored. @@ -1408,7 +1408,7 @@ wiring-shapes repeat extend union Someone = Person SchemaError: Type 'Someone' d wiring-shapes location extend union Someone @inspect SchemaError: Directive @inspect at line 1, column 22 is applied to UNION, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend union Someone @required SchemaError: Directive @required at line 1, column 22 is applied to UNION, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend union Someone @described @described SchemaError: Directive @described at line 1, column 22 isn't repeatable but is applied more than once. -wiring-shapes location extend union Someone @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to UNION, but it's declared on SCALAR. +wiring-shapes location extend union Someone @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 22 is applied to UNION, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 22 is missing its required argument 'url'. wiring-shapes kind extend type State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an object type. The extension is ignored. wiring-shapes kind extend interface State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an interface. The extension is ignored. wiring-shapes kind extend input State { compatZ: String } BUILT Type 'State' is defined as an enum, but extended as an input object type. The extension is ignored. @@ -1419,4 +1419,4 @@ wiring-shapes repeat extend enum State { ALIVE } SchemaError: Type 'State' decla wiring-shapes location extend enum State @inspect SchemaError: Directive @inspect at line 1, column 19 is applied to ENUM, but it's declared on INPUT_FIELD_DEFINITION. wiring-shapes location extend enum State @required SchemaError: Directive @required at line 1, column 19 is applied to ENUM, but it's declared on FIELD_DEFINITION. wiring-shapes repeat-directive extend enum State @described @described SchemaError: Directive @described at line 1, column 19 isn't repeatable but is applied more than once. -wiring-shapes location extend enum State @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. +wiring-shapes location extend enum State @specifiedBy SchemaError: Directive @specifiedBy at line 1, column 19 is applied to ENUM, but it's declared on SCALAR. Directive @specifiedBy at line 1, column 19 is missing its required argument 'url'. From 137ca1c515639f15eab22865df09eca1d867757a Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 15:24:45 -0500 Subject: [PATCH 09/12] Let each quoted name of a seed or proxy error come from any WARN A proxy error lists every field it can't call, and the last minor warned once per field. --- .../graphql/kickstart/tools/compat/CompatTest.kt | 11 ++++++----- .../kotlin/graphql/kickstart/tools/compat/Variants.kt | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index 4611de5e..5f38897b 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -43,8 +43,9 @@ class CompatTest { fun repeatsSeedBreak(key: CaseKey) = key != key.seed && outcomes[key.seed]?.error == outcomes.getValue(key).error fun warnedOnRelease(key: CaseKey): Boolean { val ownWarnings = released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet() - val names = warnNames.getValue(key).ifEmpty { namesIn(outcomes.getValue(key).error!!) } - return ownWarnings.any { warning -> names.all { alternatives -> alternatives.any { warning.names(it) } } } + val names = warnNames.getValue(key) + if (names.isEmpty()) return namesIn(outcomes.getValue(key).error!!).all { name -> ownWarnings.any { it.names(name) } } + return ownWarnings.any { warning -> names.all { alternatives -> alternatives.any(warning::names) } } } fun isAccepted(key: CaseKey) = accepted.any { it.matches(key) } @@ -128,9 +129,9 @@ private fun list(keys: List, detail: (CaseKey) -> String? = { null }) = keys.take(SHOWN).joinToString("\n") { key -> " $key" + detail(key)?.let { "\n $it" }.orEmpty() } + if (keys.size > SHOWN) "\n and ${keys.size - SHOWN} more" else "" -// an error without a snippet to name the type and item names them itself, in quotes, or not at all -private fun namesIn(error: String): List> = - Regex("(? = + Regex("(?>, val build: () -> Unit) From bd13cb747fcb18a04584b9339e76313ad40c2a32 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 15:29:35 -0500 Subject: [PATCH 10/12] Name what the WARN rule and the module setup do instead of commenting --- .../kickstart/tools/compat/CompatTest.kt | 20 ++++++++++--------- .../kickstart/tools/compat/Variants.kt | 20 ++++++++----------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index 5f38897b..4636b741 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -14,10 +14,7 @@ import java.io.File class CompatTest { @Test fun `cases that built on the last release still build`() { - // the tests run in the library's module, which neither reads logback's nor exports the scenarios to kotlin-reflect - val module = CompatTest::class.java.module - listOf("ch.qos.logback.classic", "ch.qos.logback.core").forEach { ModuleLayer.boot().findModule(it).ifPresent(module::addReads) } - ModuleLayer.boot().findModule("kotlin.reflect").ifPresent { module.addExports(Scenario::class.java.packageName, it) } + readLogbackAndExportScenariosToKotlinReflect() if (SCENARIOS.isEmpty()) return fail("No scenarios in ${Scenario::class.java.packageName}, so nothing is checked.") val variants = SCENARIOS.flatMap(::variants) val outcomes = runAll(variants) @@ -37,14 +34,14 @@ class CompatTest { val acceptedFile = File(dir, "accepted.txt") val accepted = readAccepted(acceptedFile) val major = version.major > release.major - val warnNames = variants.associate { it.key to it.warnNames } + val warnMustNameOneOfEach = variants.associate { it.key to it.warnMustNameOneOfEach } fun builtWithItsSeedOnRelease(key: CaseKey) = released[key.seed]?.built == true && released.getValue(key).built fun repeatsSeedBreak(key: CaseKey) = key != key.seed && outcomes[key.seed]?.error == outcomes.getValue(key).error fun warnedOnRelease(key: CaseKey): Boolean { val ownWarnings = released.getValue(key).warnings - if (key == key.seed) emptySet() else released.getValue(key.seed).warnings.toSet() - val names = warnNames.getValue(key) - if (names.isEmpty()) return namesIn(outcomes.getValue(key).error!!).all { name -> ownWarnings.any { it.names(name) } } + val names = warnMustNameOneOfEach.getValue(key) + if (names.isEmpty()) return quotedNamesOrWholeMessage(outcomes.getValue(key).error!!).all { name -> ownWarnings.any { it.names(name) } } return ownWarnings.any { warning -> names.all { alternatives -> alternatives.any(warning::names) } } } fun isAccepted(key: CaseKey) = accepted.any { it.matches(key) } @@ -129,12 +126,17 @@ private fun list(keys: List, detail: (CaseKey) -> String? = { null }) = keys.take(SHOWN).joinToString("\n") { key -> " $key" + detail(key)?.let { "\n $it" }.orEmpty() } + if (keys.size > SHOWN) "\n and ${keys.size - SHOWN} more" else "" -// the library's errors quote the types and items they name; an error that quotes none has to be in a WARN whole -private fun namesIn(error: String): List = +private fun quotedNamesOrWholeMessage(error: String): List = Regex("(?): Map { val logger = LoggerFactory.getLogger("graphql.kickstart.tools") as Logger val appender = ListAppender().apply { start() } diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt index 287a85f0..ed0a7998 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/Variants.kt @@ -25,26 +25,22 @@ data class CaseKey(val scenario: String, val operator: String, val snippet: Stri override fun toString() = listOf(scenario, operator, snippet).filter { it.isNotEmpty() }.joinToString(" | ") } -/** - * [warnNames] is what a release's WARN has to name to count as a warning about this case: one name out of each set. Seed - * and proxy cases have none, because only their error says what broke, so the WARNs have to name what the error quotes. - */ -class Variant(val key: CaseKey, val warnNames: List>, val build: () -> Unit) +class Variant(val key: CaseKey, val warnMustNameOneOfEach: List>, val build: () -> Unit) fun variants(scenario: Scenario): List { fun variant( operator: String, snippet: String = "", - warnNames: List> = emptyList(), + warnMustNameOneOfEach: List> = emptyList(), resolvers: () -> List> = { scenario.resolvers } - ) = Variant(CaseKey(scenario.name, operator, snippet), warnNames) { + ) = Variant(CaseKey(scenario.name, operator, snippet), warnMustNameOneOfEach) { val builder = scenario.parser(resolvers()) if (snippet.isNotEmpty()) builder.schemaString(snippet) scenario.schema(builder.build()) } return listOf(variant("seed"), variant("proxy") { scenario.resolvers.map { ProxyFactory(it).proxy as GraphQLResolver<*> } }) + - snippets(scenario).map { (key, warnNames) -> variant(key.first, key.second, warnNames) } + snippets(scenario).map { (key, warnMustNameOneOfEach) -> variant(key.first, key.second, warnMustNameOneOfEach) } } private val KINDS: Map, String> = mapOf( @@ -70,12 +66,12 @@ private fun snippets(scenario: Scenario): Map, List) = snippets.putIfAbsent(operator to snippet, warnNames.toList()) - // a WARN about a directive in an extension may point at the application instead of naming the type + fun add(operator: String, snippet: String, vararg warnMustNameOneOfEach: Set) = + snippets.putIfAbsent(operator to snippet, warnMustNameOneOfEach.toList()) fun addDirective(operator: String, directive: String, applications: String) { val snippet = "extend $kind ${type.name} $applications" - val positions = Regex("@$directive\\b").findAll(snippet).map { "line 1, column ${it.range.first + 1}" } - add(operator, snippet, setOf(directive), setOf(type.name) + positions) + val applicationPositions = Regex("@$directive\\b").findAll(snippet).map { "line 1, column ${it.range.first + 1}" } + add(operator, snippet, setOf(directive), setOf(type.name) + applicationPositions) } for (other in KINDS.values - kind) { From d22571e5c1bc1577af060d5548af2ee5b516e5f0 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 15:29:35 -0500 Subject: [PATCH 11/12] Quote the scenario classes by their new package and describe accepted.txt The probe prints graphql.kickstart.tools.compat.scenarios.* since the move, so the feature pages quote that. A repeated directive's error names the directive and its line, not the type. The rule table says what CompatTest checks: input that built keeps building. --- .../skills/verify-tools/features/arguments-and-inputs.md | 8 ++++---- .../verify-tools/features/context-and-environment.md | 6 +++--- .claude/skills/verify-tools/features/generic-wrappers.md | 9 +++++---- .../features/optional-data-fetcher-results.md | 3 ++- .claude/skills/verify-tools/features/proxies.md | 4 ++-- .claude/skills/verify-tools/features/schema-building.md | 6 ++++-- .claude/skills/verify-tools/features/type-extensions.md | 4 +++- AGENTS.md | 7 +++++-- 8 files changed, 28 insertions(+), 19 deletions(-) diff --git a/.claude/skills/verify-tools/features/arguments-and-inputs.md b/.claude/skills/verify-tools/features/arguments-and-inputs.md index de820272..87b9acca 100644 --- a/.claude/skills/verify-tools/features/arguments-and-inputs.md +++ b/.claude/skills/verify-tools/features/arguments-and-inputs.md @@ -44,10 +44,10 @@ from an explicit `null` (`Optional.empty()`). `Validation error (WrongType@[search])` and names `POETRY`. - **Unmapped input fields.** `run unmapped-inputs`. Exit `0`. `probe.log` has exactly one `UnmappedInputFieldChecker` WARN, starting `Input field 'ItemInput.name' has no matching property in - scenarios.ItemInput` and listing `Known properties: nmae`. There is no WARN for `InnerInput.legacy`. - `01-ignored.json` has `data.ignored = "a"`. `02-typo.json` has one error containing - `Unrecognized property "name" (class scenarios.ItemInput)` (`Unrecognized field` before Jackson 3, in 14.x), which shows - the reported field really fails. + graphql.kickstart.tools.compat.scenarios.ItemInput` and listing `Known properties: nmae`. There is no WARN for + `InnerInput.legacy`. `01-ignored.json` has `data.ignored = "a"`. `02-typo.json` has one error containing + `Unrecognized property "name" (class graphql.kickstart.tools.compat.scenarios.ItemInput)` (`Unrecognized field` before + Jackson 3, in 14.x), which shows the reported field really fails. - **Type variable parameters.** `run generic-input-resolver`. Exit `0`. `summary.txt` shows `errors=0` for both operations. `02-generic.json` has `data.generic = "generic got GreetingInput(name=a)"`, and `01-plain.json` has diff --git a/.claude/skills/verify-tools/features/context-and-environment.md b/.claude/skills/verify-tools/features/context-and-environment.md index 41266e4f..b61fc427 100644 --- a/.claude/skills/verify-tools/features/context-and-environment.md +++ b/.claude/skills/verify-tools/features/context-and-environment.md @@ -24,7 +24,7 @@ Any other trailing parameter type fails the build with "No method found". - **Invalid.** `run context-and-environment-invalid`. Exit `2`. `build-error.txt` starts with `graphql.kickstart.tools.resolver.FieldResolverError: No method found ... (optionally followed by any of [interface graphql.schema.DataFetchingEnvironment, class graphql.GraphQLContext, class - scenarios.AppContext])`. + graphql.kickstart.tools.compat.scenarios.AppContext])`. - **Misbound.** `run context-misbound`. Exit `2`, no operations run, and `probe.log` is empty. `build-error.txt` starts with `graphql.kickstart.tools.resolver.FieldResolverError: Field 'Query.users' has no parameter for its argument 'first: Int' in graphql.kickstart.tools.compat.scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment @@ -43,8 +43,8 @@ Any other trailing parameter type fails the build with "No method found". operation is not implemented: Schema resolver not implemented"}`. - `run sourceless-misbound`: exit `2`. `thumbnail(GraphQLContext, env)` for `thumbnail(size: Int)` still fails the build. The signatures listed for `compat/scenarios/sourceless-misbound/schema.graphqls:11` end with - `scenarios.MisboundImageResolver.thumbnail(~size, )` and - `scenarios.MisboundImageResolver.getThumbnail(~size, )`. + `graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.thumbnail(~size, )` and + `graphql.kickstart.tools.compat.scenarios.MisboundImageResolver.getThumbnail(~size, )`. ## Gotchas diff --git a/.claude/skills/verify-tools/features/generic-wrappers.md b/.claude/skills/verify-tools/features/generic-wrappers.md index 88211778..ef2c57d8 100644 --- a/.claude/skills/verify-tools/features/generic-wrappers.md +++ b/.claude/skills/verify-tools/features/generic-wrappers.md @@ -46,13 +46,14 @@ the lists, and combines the futures below the outermost value into one, so one f ## Gotchas - Before #903 (commit a4736c9a) `nested-wrappers` still exits `0`. `02`, `07`, `08` and `10` have an error per element, - `Expected source object to be an instance of '' but instead got 'scenarios.Try$Success'`, and `04`, `06`, `09` - and `11` the same with `'java.util.concurrent.CompletableFuture'`. `03-payload-strings.json` has + `Expected source object to be an instance of '' but instead got + 'graphql.kickstart.tools.compat.scenarios.Try$Success'`, and `04`, `06`, `09` and `11` the same with + `'java.util.concurrent.CompletableFuture'`. `03-payload-strings.json` has `["Success(value=a)", "Success(value=b)"]` and `05-item-names.json` has `java.util.concurrent.CompletableFuture@[Completed normally]` strings, both with `errors=0`. - Before #903 `nested-wrappers-suspend` fails the build (exit `2`) with `SchemaClassScannerError: Two different classes used - for type Item`, naming `java.util.concurrent.CompletableFuture` for `nullableItems` and - `scenarios.NestedItem` for `nonNullItems`. + for type Item`, naming `java.util.concurrent.CompletableFuture` for + `nullableItems` and `graphql.kickstart.tools.compat.scenarios.NestedItem` for `nonNullItems`. - Before #903 `nested-wrappers-unboxer` had `errors=0` for `01` to `09`, because the app's `ValueUnboxer` did the unwrapping. `10` and `11` were `THREW java.lang.IllegalStateException` in `summary.txt`, with `{"threw": ...}` in the JSON, because the failed element's exception left `execute`. Now they return `errors=1` like `nested-wrappers`. diff --git a/.claude/skills/verify-tools/features/optional-data-fetcher-results.md b/.claude/skills/verify-tools/features/optional-data-fetcher-results.md index cf89577f..ff197951 100644 --- a/.claude/skills/verify-tools/features/optional-data-fetcher-results.md +++ b/.claude/skills/verify-tools/features/optional-data-fetcher-results.md @@ -29,7 +29,8 @@ the field resolves its data and the query keeps its errors. An empty `Optional` ## Gotchas - Before the fix (master 3f022b91) `optional-results` still exits `0`. `01` has - `data.optionalResult = {"data": "scenarios.OptionalResultsPayload@"}` with no error, and `02` has + `data.optionalResult = {"data": "graphql.kickstart.tools.compat.scenarios.OptionalResultsPayload@"}` with no + error, and `02` has `"DataFetcherResult{data=a, errors=[], localContext=null, extensions=null}"`. `optional-results-mixed` exits `2` with `Two different classes used for type Payload`, `optional-results-list` exits `2` with `Java class is not a List or generic type information was lost`, and `optional-results-nested` exits `0` with the same `Payload@` string. diff --git a/.claude/skills/verify-tools/features/proxies.md b/.claude/skills/verify-tools/features/proxies.md index f3a6c0f9..88670c84 100644 --- a/.claude/skills/verify-tools/features/proxies.md +++ b/.claude/skills/verify-tools/features/proxies.md @@ -32,8 +32,8 @@ interfaces, so it can't call a field that resolves to the target's own method or - Before #913 (commit f4800425) `jdk-proxy` builds with exit `0`. `01-query.json` has `data = {"test": null, "count": null, "total": null}` and three errors, `object of type jdk.proxy2.$ProxyN is not an - instance of scenarios.ProxiedQuery` for `test` and `total`, and `Can not get final int field scenarios.ProxiedQuery.count` - for `count`. From #853 on, `probe.log` has one `SchemaClassScanner` WARN per field. Before it, `probe.log` is empty. + instance of graphql.kickstart.tools.compat.scenarios.ProxiedQuery` for `test` and `total`, and `Can not get final int + field graphql.kickstart.tools.compat.scenarios.ProxiedQuery.count` for `count`. From #853 on, `probe.log` has one `SchemaClassScanner` WARN per field. Before it, `probe.log` is empty. - The proxy number in `jdk.proxy2.$ProxyN` varies between runs. - CGLIB can't override `final` members, so the resolver and its members must be `open`. A final getter is called on the proxy itself and reads the proxy's empty field, like `count` does. diff --git a/.claude/skills/verify-tools/features/schema-building.md b/.claude/skills/verify-tools/features/schema-building.md index 7e388f79..d794262f 100644 --- a/.claude/skills/verify-tools/features/schema-building.md +++ b/.claude/skills/verify-tools/features/schema-building.md @@ -35,8 +35,10 @@ signature it tried. Types no root can reach get a warning and are dropped from t - **Missing resolver.** `run bookstore-missing-resolver`. Exit `2`. `summary.txt` has `schema build: FAILED graphql.kickstart.tools.resolver.FieldResolverError: No method or field found as defined in schema compat/scenarios/bookstore-missing-resolver/extension.graphqls:2`. The 8 listed signatures start with - `scenarios.AuthorResolver.isbn(scenarios.Book)`, have `scenarios.Book.isbn` sixth, and end with - `scenarios.AuthorResolver.getIsbn()`. `build-error.txt` has the stack trace. + `graphql.kickstart.tools.compat.scenarios.AuthorResolver.isbn(graphql.kickstart.tools.compat.scenarios.Book)`, have + `graphql.kickstart.tools.compat.scenarios.Book.isbn` sixth, and end with + `graphql.kickstart.tools.compat.scenarios.AuthorResolver.getIsbn()`. `build-error.txt` has the + stack trace. - **Read-only schema.** `run read-only-schema`. Exit `0` and all three operations have `errors=0`. `01-interface.json` has `data.animal = {"__typename": "Cat", "name": "Tom", "lives": 9}`, `02-union.json` lists `Dog` Rex then `Cat` Tom, and `03-no-mutation.json` has `mutationType: null`. `schema.graphqls` diff --git a/.claude/skills/verify-tools/features/type-extensions.md b/.claude/skills/verify-tools/features/type-extensions.md index c6300561..29f876b9 100644 --- a/.claude/skills/verify-tools/features/type-extensions.md +++ b/.claude/skills/verify-tools/features/type-extensions.md @@ -3,7 +3,9 @@ `extend type`, `extend interface`, `extend union`, `extend enum`, `extend input` and `extend scalar` add to the type they extend: fields, interfaces, members, values and directives are merged into one graphql-java type, base first. Where a type and its extensions declare a field, enum value or union member twice, or apply a non-repeatable directive again, the build -fails with a `SchemaError` that names the type, the item and its line. An extension of a different kind than its type is +fails with a `SchemaError`. For a field, value or member it names the type, the item and its line. For a directive it names +only the directive and its line, as in `Directive @once at line 1, column 25 isn't repeatable but is applied more than +once.` An extension of a different kind than its type is ignored with a WARN. A union, enum, interface or scalar that only has extensions is built from them. ## Sub-features diff --git a/AGENTS.md b/AGENTS.md index 3fb4a472..18397be8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -52,7 +52,10 @@ page. `github-build.sh` and `.github/workflows/release.yml` do the version bump, After the release is published, record what it builds, so `CompatTest` checks later changes against it. Check out the release tag in a worktree, run `mvn -B -ntp clean test -Dtest=CompatTest -Dcompat.capture`, and open a PR with the `src/test/resources/compat//` it writes: `cases.tsv` and an empty `accepted.txt`. A later break that the release -notes list goes into that `accepted.txt` as a regex for the case, a tab, and the issue. +notes list goes into that `accepted.txt` as one line: the case as `CompatTest` lists it, a tab, and why, naming the issue +(`#N`) or the release notes (`X.Y.Z release notes`). Start the case with `re:` to give a regex instead. A line that matches +no failing case fails the test. So does a case that built on the release and isn't generated any more, because a scenario +was renamed, removed or edited. Then capture the release again as the failure says, or list the case. ## Rules that need judgment @@ -115,4 +118,4 @@ happening. "docs only" means nothing does yet, so the rule depends on you readin | A build you trust starts from an empty `target/`, so no class from an earlier build ships | `clean` in `probe.sh install`, docs only for your own `mvn` runs | | Agent worktrees and local settings stay out of commits | `.gitignore` | | Agent rules live in one committed file | This file. `CLAUDE.md` imports it | -| Invalid input that used to build logs a WARN until the next major | `CompatTest`, against the last release's results in `src/test/resources/compat` | +| Invalid input that built on the last release keeps building until the next major | `CompatTest`, against the last release's results in `src/test/resources/compat` | From 428bd5c84cefdee5bdc00e294d5f949992fcb260 Mon Sep 17 00:00:00 2001 From: Oryan Date: Wed, 4 Nov 2026 19:52:56 -0500 Subject: [PATCH 12/12] Refuse branch captures and re: lines that accept a whole corpus A capture taken at a -SNAPSHOT version records the branch, so the next run passes against its own breaks. Capturing now fails there, and the test fails while a capture exists for a version the pom says isn't released yet. A re: line in accepted.txt may match at most 20 cases, all in one scenario, so re:.* can't accept every break silently. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 4 +- .../kickstart/tools/compat/CompatTest.kt | 52 +++++++++++++++---- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 3eabc4fd..7644763d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,7 +55,9 @@ After the release is published, record what it builds, so `CompatTest` checks la release tag in a worktree, run `mvn -B -ntp clean test -Dtest=CompatTest -Dcompat.capture`, and open a PR with the `src/test/resources/compat//` it writes: `cases.tsv` and an empty `accepted.txt`. A later break that the release notes list goes into that `accepted.txt` as one line: the case as `CompatTest` lists it, a tab, and why, naming the issue -(`#N`) or the release notes (`X.Y.Z release notes`). Start the case with `re:` to give a regex instead. A line that matches +(`#N`) or the release notes (`X.Y.Z release notes`). Start the case with `re:` to give a regex instead, matching at most 20 +cases, all in one scenario. Capturing fails at a `-SNAPSHOT` version, and so does the test while a capture exists for a version +the pom says isn't released yet, because a capture made on a branch hides the branch's breaks. A line that matches no failing case fails the test. So does a case that built on the release and isn't generated any more, because a scenario was renamed, removed or edited. Then capture the release again as the failure says, or list the case. diff --git a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt index 4636b741..6da48d4e 100644 --- a/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt +++ b/src/test/kotlin/graphql/kickstart/tools/compat/CompatTest.kt @@ -18,21 +18,32 @@ class CompatTest { if (SCENARIOS.isEmpty()) return fail("No scenarios in ${Scenario::class.java.packageName}, so nothing is checked.") val variants = SCENARIOS.flatMap(::variants) val outcomes = runAll(variants) - val version = pomVersion() + val pom = PomVersion.read() + val version = pom.version if (System.getProperty("compat.capture") != null) { + if (!pom.isRelease) return fail( + "pom.xml is at ${pom.text}, so a capture would record this branch instead of a release. Captures are taken from " + + "the release tag, as AGENTS.md describes under Releases. To capture a release again with the scenarios you have, " + + "run `git checkout vX.Y.Z -- pom.xml src/main` first and `git checkout HEAD -- pom.xml src/main` after." + ) val dir = File(CAPTURES, version.toString()).apply { mkdirs() } write(File(dir, "cases.tsv"), outcomes) File(dir, "accepted.txt").takeUnless { it.exists() }?.writeText("") return } - val (release, dir) = CAPTURES.listFiles().orEmpty().mapNotNull { file -> parseVersion(file.name)?.let { it to file } } - .filter { it.first <= version }.maxByOrNull { it.first } - ?: return fail("No capture in $CAPTURES at or below $version. Capture the last release as AGENTS.md describes under Releases.") + val captures = CAPTURES.listFiles().orEmpty().mapNotNull { file -> parseVersion(file.name)?.let { it to file } } + val unreleased = captures.filterNot { pom.couldBeReleased(it.first) } + if (unreleased.isNotEmpty()) return fail( + "${unreleased.joinToString { it.second.path }} can't hold a release, because pom.xml is at ${pom.text}. A capture made " + + "on a branch records the branch, so it hides any break. Delete it. Captures are taken from the release tag, as " + + "AGENTS.md describes under Releases." + ) + val (release, dir) = captures.maxByOrNull { it.first } + ?: return fail("No capture in $CAPTURES. Capture the last release as AGENTS.md describes under Releases.") val released = read(File(dir, "cases.tsv")) if (released.isEmpty()) return fail("$dir/cases.tsv is empty, so nothing is checked. Capture $release as AGENTS.md describes under Releases.") val acceptedFile = File(dir, "accepted.txt") - val accepted = readAccepted(acceptedFile) val major = version.major > release.major val warnMustNameOneOfEach = variants.associate { it.key to it.warnMustNameOneOfEach } @@ -44,9 +55,10 @@ class CompatTest { if (names.isEmpty()) return quotedNamesOrWholeMessage(outcomes.getValue(key).error!!).all { name -> ownWarnings.any { it.names(name) } } return ownWarnings.any { warning -> names.all { alternatives -> alternatives.any(warning::names) } } } + val protected = released.keys.filter(::builtWithItsSeedOnRelease) + val accepted = readAccepted(acceptedFile, protected) fun isAccepted(key: CaseKey) = accepted.any { it.matches(key) } - val protected = released.keys.filter(::builtWithItsSeedOnRelease) val missing = protected.filterNot(outcomes::containsKey) val broken = protected.filter { outcomes[it]?.built == false }.filterNot(::repeatsSeedBreak) val stale = accepted.filter { entry -> (missing + broken).none(entry::matches) } @@ -101,9 +113,13 @@ private class Accepted(val line: Int, val case: String) { private val CAPTURES = File("src/test/resources/compat") private const val SHOWN = 50 private const val PATTERN = "re:" + +// Fits one operator on one directive or type in one scenario. 14.3.0 applying directives on type extensions, the widest +// deliberate break so far, needs at most 15 per line that way. +private const val MAX_PER_PATTERN = 20 private val REFERENCE = Regex("#\\d+|\\d+\\.\\d+\\.\\d+ release notes") -private fun readAccepted(file: File): List { +private fun readAccepted(file: File, protected: List): List { val problems = mutableListOf() val accepted = file.readLines().withIndex().filter { it.value.isNotBlank() }.mapNotNull { (index, text) -> val case = text.substringBefore('\t') @@ -111,6 +127,13 @@ private fun readAccepted(file: File): List { val problem = when { !REFERENCE.containsMatchIn(reason) -> "needs a tab and a reason that names an issue (#N) or the release notes (\"X.Y.Z release notes\")" case.startsWith(PATTERN) && runCatching { Regex(case.removePrefix(PATTERN)) }.isFailure -> "starts with $PATTERN but isn't a valid regex" + case.startsWith(PATTERN) -> Accepted(index + 1, case).let { entry -> + val matched = protected.filter(entry::matches) + val scenarios = matched.map { it.scenario }.distinct() + if (scenarios.size <= 1 && matched.size <= MAX_PER_PATTERN) null + else "accepts ${matched.size} cases in ${scenarios.size} scenarios, and a $PATTERN line may accept at most " + + "$MAX_PER_PATTERN, all in one scenario. List the cases, one per line, or one $PATTERN line per scenario" + } else -> null } problem?.let { problems += " line ${index + 1} $it: $text" } @@ -178,10 +201,17 @@ private fun read(file: File): Map = file.readLines().filter { CaseKey(cells[0], cells[1], cells[2]) to Outcome(cells[3].takeUnless { it == "BUILT" }, cells.drop(4)) } -private fun pomVersion(): KotlinVersion { - val pom = File("pom.xml").readText() - val version = Regex("graphql-java-tools\\s*([^<]+)").find(pom)!!.groupValues[1] - return parseVersion(version.substringBefore('-'))!! +private class PomVersion(val text: String) { + val version = parseVersion(text.substringBefore('-'))!! + val isRelease = '-' !in text + + fun couldBeReleased(capture: KotlinVersion) = if (isRelease) capture <= version else capture < version + + companion object { + fun read() = PomVersion( + Regex("graphql-java-tools\\s*([^<]+)").find(File("pom.xml").readText())!!.groupValues[1] + ) + } } private fun parseVersion(text: String): KotlinVersion? =