summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hir/from_ast.cpp10
-rw-r--r--src/hir/hir.hpp3
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 )
{}
};