Skip to content

Commit c778566

Browse files
authored
Merge pull request #5401 from rmosolgo/better-from-definition-directives
Fix loading directives from SDL
2 parents 885a0bf + e772acc commit c778566

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

lib/graphql/schema/build_from_definition.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ def build_definition_from_node(definition, type_resolver, default_resolve, base_
266266
build_scalar_type(definition, type_resolver, base_types[:scalar], default_resolve: default_resolve)
267267
when GraphQL::Language::Nodes::InputObjectTypeDefinition
268268
build_input_object_type(definition, type_resolver, base_types[:input_object])
269+
when GraphQL::Language::Nodes::DirectiveDefinition
270+
build_directive(definition, type_resolver)
269271
end
270272
end
271273

@@ -544,7 +546,7 @@ def build_resolve_type(lookup_hash, directives, missing_type_handler)
544546
when GraphQL::Language::Nodes::ListType
545547
resolve_type_proc.call(ast_node.of_type).to_list_type
546548
when String
547-
directives[ast_node]
549+
directives[ast_node] ||= missing_type_handler.call(ast_node)
548550
else
549551
raise "Unexpected ast_node: #{ast_node.inspect}"
550552
end

spec/graphql/schema/build_from_definition_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1905,4 +1905,20 @@ module MyInterface
19051905
assert schema_class.query.ast_node.name.frozen?
19061906
end
19071907
end
1908+
1909+
it "works when directives use argument types defined after them" do
1910+
schema_sdl = <<~GRAPHQL
1911+
directive @foo(value: SomeEnum!) on OBJECT
1912+
directive @bar on ENUM_VALUE
1913+
1914+
enum SomeEnum {
1915+
BAZ @bar
1916+
}
1917+
1918+
type Query {
1919+
someEnum: SomeEnum!
1920+
}
1921+
GRAPHQL
1922+
GraphQL::Schema.from_definition(schema_sdl)
1923+
end
19081924
end

0 commit comments

Comments
 (0)