@@ -131,8 +131,9 @@ def resolve_data_for(field, args)
131131 return unless args . size . zero?
132132
133133 if field . try ( :dynamic_resolver? )
134- prepared = prepared_data_for ( field )
135- args << Event . trigger ( :resolve , field , self , prepared_data : prepared , &field . resolver )
134+ extra = prepared_data_for ( field , with_null : true )
135+ extra = extra === PreparedData ::NULL ? EMPTY_HASH : { prepared : extra }
136+ args << Event . trigger ( :resolve , field , self , **extra , &field . resolver )
136137 elsif field . prepared_data?
137138 args << prepared_data_for ( field )
138139 else
@@ -206,11 +207,14 @@ def safe_store_data(field, value = nil)
206207
207208 # Get the prepared data for the given +field+, getting ready for
208209 # resolve, while ensuring to check prepared data on request
209- def prepared_data_for ( field )
210- return @data_pool [ field ] unless field . prepared_data?
211-
212- prepared = request . prepared_data_for ( field ) . next
213- prepared unless prepared === PreparedData ::NULL
210+ def prepared_data_for ( field , with_null : false )
211+ if field . prepared_data?
212+ request . prepared_data_for ( field ) . next
213+ elsif @data_pool . key? ( field )
214+ @data_pool [ field ]
215+ elsif with_null
216+ PreparedData ::NULL
217+ end
214218 end
215219
216220 # Simply run the organize step for compilation
0 commit comments