summaryrefslogtreecommitdiff
path: root/src/hir/visitor.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-06-04 11:43:45 +0800
committerJohn Hodge <tpg@mutabah.net>2016-06-04 11:43:45 +0800
commitf9e94f5e907af0ce205a6b04deb5b0d35a4e1bc4 (patch)
tree55562cd226fa90c5c9ac24efa7eb4e4d74cf719f /src/hir/visitor.cpp
parent6fad166a1c3b18bda2c9c6c981d72628cd256a00 (diff)
downloadmrust-f9e94f5e907af0ce205a6b04deb5b0d35a4e1bc4.tar.gz
HIR Typeck - Coming along, close to needing coercions
Diffstat (limited to 'src/hir/visitor.cpp')
-rw-r--r--src/hir/visitor.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/hir/visitor.cpp b/src/hir/visitor.cpp
index 23acf4e4..d2ee9f74 100644
--- a/src/hir/visitor.cpp
+++ b/src/hir/visitor.cpp
@@ -88,26 +88,32 @@ void ::HIR::Visitor::visit_module(::HIR::Module& mod)
void ::HIR::Visitor::visit_type_impl(::HIR::TypeImpl& impl)
{
+ TRACE_FUNCTION_F("impl.m_type=" << impl.m_type);
this->visit_params(impl.m_params);
this->visit_type(impl.m_type);
for(auto& method : impl.m_methods) {
+ DEBUG("method " << method.first);
this->visit_function(method.second);
}
}
void ::HIR::Visitor::visit_trait_impl(const ::HIR::SimplePath& trait_path, ::HIR::TraitImpl& impl)
{
+ TRACE_FUNCTION_F("trait_path=" << trait_path);
this->visit_params(impl.m_params);
this->visit_path_params(impl.m_trait_args);
this->visit_type(impl.m_type);
for(auto& ent : impl.m_methods) {
+ DEBUG("method " << ent.first);
this->visit_function(ent.second);
}
for(auto& ent : impl.m_constants) {
+ DEBUG("const " << ent.first);
this->visit_expr(ent.second);
}
for(auto& ent : impl.m_types) {
+ DEBUG("type " << ent.first);
this->visit_type(ent.second);
}
}
@@ -125,11 +131,13 @@ void ::HIR::Visitor::visit_type_alias(::HIR::TypeAlias& item)
}
void ::HIR::Visitor::visit_trait(::HIR::Trait& item)
{
+ TRACE_FUNCTION;
this->visit_params(item.m_params);
for(auto& par : item.m_parent_traits) {
this->visit_generic_path(par, ::HIR::Visitor::PathContext::TYPE);
}
for(auto& i : item.m_types) {
+ DEBUG("type " << i.first);
this->visit_params(i.second.m_params);
this->visit_type(i.second.m_default);
}
@@ -137,12 +145,15 @@ void ::HIR::Visitor::visit_trait(::HIR::Trait& item)
TU_MATCH(::HIR::TraitValueItem, (i.second), (e),
(None, ),
(Constant,
+ DEBUG("constant " << i.first);
this->visit_constant(e);
),
(Static,
+ DEBUG("static " << i.first);
this->visit_static(e);
),
(Function,
+ DEBUG("method " << i.first);
this->visit_function(e);
)
)