From 4c9e71afa9fe11ddf7dc6e660ce8cf38da93b781 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 20 Jan 2019 15:29:26 +0800 Subject: Type resolve static - Cleanups --- src/hir_typeck/static.hpp | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/hir_typeck/static.hpp b/src/hir_typeck/static.hpp index f764f8f7..564d2110 100644 --- a/src/hir_typeck/static.hpp +++ b/src/hir_typeck/static.hpp @@ -16,8 +16,8 @@ class StaticTraitResolve public: const ::HIR::Crate& m_crate; - ::HIR::GenericParams* m_impl_generics; - ::HIR::GenericParams* m_item_generics; + const ::HIR::GenericParams* m_impl_generics; + const ::HIR::GenericParams* m_item_generics; ::std::map< ::HIR::TypeRef, ::HIR::TypeRef> m_type_equalities; @@ -86,19 +86,35 @@ public: ptr = nullptr; } }; - NullOnDrop< ::HIR::GenericParams> set_impl_generics(::HIR::GenericParams& gps) { + NullOnDrop set_impl_generics(const ::HIR::GenericParams& gps) { + set_impl_generics_raw(gps); + return NullOnDrop(m_impl_generics); + } + NullOnDrop set_item_generics(const ::HIR::GenericParams& gps) { + set_item_generics_raw(gps); + return NullOnDrop(m_item_generics); + } + void set_impl_generics_raw(const ::HIR::GenericParams& gps) { assert( !m_impl_generics ); m_impl_generics = &gps; m_type_equalities.clear(); prep_indexes(); - return NullOnDrop< ::HIR::GenericParams>(m_impl_generics); } - NullOnDrop< ::HIR::GenericParams> set_item_generics(::HIR::GenericParams& gps) { + void clear_impl_generics() { + m_impl_generics = nullptr; + m_type_equalities.clear(); + prep_indexes(); + } + void set_item_generics_raw(const ::HIR::GenericParams& gps) { assert( !m_item_generics ); m_item_generics = &gps; m_type_equalities.clear(); prep_indexes(); - return NullOnDrop< ::HIR::GenericParams>(m_item_generics); + } + void clear_item_generics() { + m_item_generics = nullptr; + m_type_equalities.clear(); + prep_indexes(); } /// \} -- cgit v1.2.3