Skip to content

Commit f606d08

Browse files
committed
Don't pass frozen array of extensions
1 parent b4c4fa2 commit f606d08

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

lib/graphql/schema/resolver.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,15 @@ def field_options
307307
arguments: arguments,
308308
null: null,
309309
complexity: complexity,
310-
extensions: extensions,
311310
broadcastable: broadcastable?,
312311
}
313312

313+
# If there aren't any, then the returned array is `[].freeze`,
314+
# but passing that along breaks some user code.
315+
if (exts = extensions).any?
316+
field_opts[:extensions] = exts
317+
end
318+
314319
if has_max_page_size?
315320
field_opts[:max_page_size] = max_page_size
316321
end

spec/graphql/schema/resolver_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,12 @@ def load_input(input); end
825825
assert_equal 1, r1.extensions.size
826826
assert_equal 2, r2.extensions.size
827827
end
828+
829+
it "doesn't pass anything when there are no extensions" do
830+
r1 = Class.new(GraphQL::Schema::Resolver)
831+
assert_equal [], r1.extensions
832+
refute r1.field_options.key?(:extensions)
833+
end
828834
end
829835

830836
describe "max_page_size" do

0 commit comments

Comments
 (0)