diff options
author | John Hodge <tpg@mutabah.net> | 2016-10-22 13:38:27 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-10-22 16:00:27 +0800 |
commit | 2a3fe3be8373594fcd7e46fd4d9c151c28317c9e (patch) | |
tree | 7e0557337ef10bc870d2a243b61dd3d9af65e6cd /src/hir/visitor.cpp | |
parent | 5a20d91b53d7889a5be8ed9dabeccbac0371f121 (diff) | |
download | mrust-2a3fe3be8373594fcd7e46fd4d9c151c28317c9e.tar.gz |
HIR - Allow (partial) TraitObject with no data trait, better logging of ItemPath
Diffstat (limited to 'src/hir/visitor.cpp')
-rw-r--r-- | src/hir/visitor.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/hir/visitor.cpp b/src/hir/visitor.cpp index 88b1be22..05e99734 100644 --- a/src/hir/visitor.cpp +++ b/src/hir/visitor.cpp @@ -1,4 +1,10 @@ - +/* + * MRustC - Rust Compiler + * - By John Hodge (Mutabah/thePowersGang) + * + * hir/visitor.cpp + * - HIR Visitor default implementation + */ #include <hir/hir.hpp> #include <hir/visitor.hpp> @@ -104,7 +110,7 @@ void ::HIR::Visitor::visit_type_impl(::HIR::TypeImpl& impl) } void ::HIR::Visitor::visit_trait_impl(const ::HIR::SimplePath& trait_path, ::HIR::TraitImpl& impl) { - ::HIR::ItemPath p( impl.m_type, trait_path ); + ::HIR::ItemPath p( impl.m_type, trait_path, impl.m_trait_args ); TRACE_FUNCTION_F(p); this->visit_params(impl.m_params); // - HACK: Create a generic path to visit (so that proper checks are performed) @@ -282,7 +288,9 @@ void ::HIR::Visitor::visit_type(::HIR::TypeRef& ty) (Generic, ), (TraitObject, - this->visit_trait_path(e.m_trait); + if( e.m_trait.m_path != ::HIR::SimplePath() ) { + this->visit_trait_path(e.m_trait); + } for(auto& trait : e.m_markers) { this->visit_generic_path(trait, ::HIR::Visitor::PathContext::TYPE); } |