summaryrefslogtreecommitdiff
path: root/src/hir/visitor.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-10-22 13:38:27 +0800
committerJohn Hodge <tpg@mutabah.net>2016-10-22 16:00:27 +0800
commit2a3fe3be8373594fcd7e46fd4d9c151c28317c9e (patch)
tree7e0557337ef10bc870d2a243b61dd3d9af65e6cd /src/hir/visitor.cpp
parent5a20d91b53d7889a5be8ed9dabeccbac0371f121 (diff)
downloadmrust-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.cpp14
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);
}