From a1e57eb4a8753278bc0b4c0eaa0b3b4aa0f8d460 Mon Sep 17 00:00:00 2001 From: Sunli Date: Mon, 12 Oct 2020 11:04:01 +0800 Subject: [PATCH] All merged objects will no longer be removed. #308 --- derive/src/input_object.rs | 4 ++-- derive/src/merged_object.rs | 6 +++--- derive/src/merged_subscription.rs | 4 ++-- derive/src/union.rs | 4 ++-- src/types/connection/edge.rs | 4 ++-- src/types/merged_object.rs | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/derive/src/input_object.rs b/derive/src/input_object.rs index e9f7c5d8..0b1fdc70 100644 --- a/derive/src/input_object.rs +++ b/derive/src/input_object.rs @@ -67,8 +67,8 @@ pub fn generate(object_args: &args::InputObject) -> GeneratorResult #crate_name::static_assertions::assert_impl_one!(#ty: #crate_name::InputObjectType); #ty::create_type_info(registry); if let Some(#crate_name::registry::MetaType::InputObject{ input_fields, .. }) = - registry.types.remove(&*<#ty as #crate_name::Type>::type_name()) { - fields.extend(input_fields); + registry.types.get(&*<#ty as #crate_name::Type>::type_name()) { + fields.extend(input_fields.clone()); } }); diff --git a/derive/src/merged_object.rs b/derive/src/merged_object.rs index 21200654..bec9949f 100644 --- a/derive/src/merged_object.rs +++ b/derive/src/merged_object.rs @@ -70,9 +70,9 @@ pub fn generate(object_args: &args::MergedObject) -> GeneratorResult GeneratorResult GeneratorResult { } else { possible_types.push(quote! { if let Some(#crate_name::registry::MetaType::Union { possible_types: possible_types2, .. }) = - registry.types.remove(&*<#p as #crate_name::Type>::type_name()) { - possible_types.extend(possible_types2); + registry.types.get(&*<#p as #crate_name::Type>::type_name()) { + possible_types.extend(possible_types2.clone()); } }); } diff --git a/src/types/connection/edge.rs b/src/types/connection/edge.rs index 773e3931..bee772d3 100644 --- a/src/types/connection/edge.rs +++ b/src/types/connection/edge.rs @@ -52,9 +52,9 @@ where registry.create_type::(|registry| { E::create_type_info(registry); let additional_fields = if let Some(registry::MetaType::Object { fields, .. }) = - registry.types.remove(E::type_name().as_ref()) + registry.types.get(E::type_name().as_ref()) { - fields + fields.clone() } else { unreachable!() }; diff --git a/src/types/merged_object.rs b/src/types/merged_object.rs index d730c981..83afc31d 100644 --- a/src/types/merged_object.rs +++ b/src/types/merged_object.rs @@ -26,9 +26,9 @@ impl Type for MergedObject { fields: a_fields, cache_control: a_cc, .. - }) = registry.types.remove(&*A::type_name()) + }) = registry.types.get(&*A::type_name()) { - fields.extend(a_fields); + fields.extend(a_fields.clone()); cc = cc.merge(&a_cc); } @@ -37,9 +37,9 @@ impl Type for MergedObject { fields: b_fields, cache_control: b_cc, .. - }) = registry.types.remove(&*B::type_name()) + }) = registry.types.get(&*B::type_name()) { - fields.extend(b_fields); + fields.extend(b_fields.clone()); cc = cc.merge(&b_cc); }