diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/hir/from_ast.cpp | 10 | ||||
-rw-r--r-- | src/hir/hir.hpp | 3 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp index b0768a84..bf0f39b8 100644 --- a/src/hir/from_ast.cpp +++ b/src/hir/from_ast.cpp @@ -685,13 +685,17 @@ ), (TraitObject, if( e.hrls.size() > 0 ) - TODO(ty.span(), "TODO: TraitObjects with HRLS"); + TODO(ty.span(), "TraitObjects with HRLS - " << ty); ::HIR::TypeRef::Data::Data_TraitObject v; for(const auto& t : e.traits) { + DEBUG("t = " << t); const auto& tb = t.binding().as_Trait(); assert( tb.trait_ || tb.hir ); - if( (tb.trait_ && tb.trait_->is_marker()) || (tb.hir->m_is_marker) ) { + if( (tb.trait_ ? tb.trait_->is_marker() : tb.hir->m_is_marker) ) { + if( tb.hir ) { + DEBUG(tb.hir->m_values.size()); + } v.m_markers.push_back( LowerHIR_GenericPath(ty.span(), t) ); } else { @@ -912,6 +916,8 @@ namespace { ) } + rv.m_is_marker = f.is_marker(); + return rv; } ::HIR::Function LowerHIR_Function(::HIR::ItemPath p, const ::AST::Function& f, const ::HIR::TypeRef& self_type) diff --git a/src/hir/hir.hpp b/src/hir/hir.hpp index 850dab00..80c18b41 100644 --- a/src/hir/hir.hpp +++ b/src/hir/hir.hpp @@ -191,7 +191,8 @@ struct Trait Trait( GenericParams gps, ::std::string lifetime, ::std::vector< ::HIR::TraitPath> parents): m_params( mv$(gps) ), m_lifetime( mv$(lifetime) ), - m_parent_traits( mv$(parents) ) + m_parent_traits( mv$(parents) ), + m_is_marker( false ) {} }; |