@@ -131,8 +131,9 @@ def resolve_data_for(field, args)
131
131
return unless args . size . zero?
132
132
133
133
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 )
136
137
elsif field . prepared_data?
137
138
args << prepared_data_for ( field )
138
139
else
@@ -206,11 +207,14 @@ def safe_store_data(field, value = nil)
206
207
207
208
# Get the prepared data for the given +field+, getting ready for
208
209
# 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
214
218
end
215
219
216
220
# Simply run the organize step for compilation
0 commit comments