diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-11-23 12:01:40 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-11-23 12:01:40 +0800 |
commit | 87df981564afc3debfe5b11842f375bfae5900ff (patch) | |
tree | 803047f1d90bf6b01ac6445bdb9c7e592d81466f /src/hir_conv/bind.cpp | |
parent | fb2b1202e916e2e3f406d03005237b1d2447269f (diff) | |
download | mrust-87df981564afc3debfe5b11842f375bfae5900ff.tar.gz |
HIR - Restructure resolve to replace `Self` type later in processing
Diffstat (limited to 'src/hir_conv/bind.cpp')
-rw-r--r-- | src/hir_conv/bind.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/hir_conv/bind.cpp b/src/hir_conv/bind.cpp index b494cc58..579df975 100644 --- a/src/hir_conv/bind.cpp +++ b/src/hir_conv/bind.cpp @@ -441,6 +441,10 @@ namespace { } void visit_type(::HIR::TypeRef& ty) override { + visit_type_inner(ty); + } + void visit_type_inner(::HIR::TypeRef& ty, bool do_bind=true) + { //TRACE_FUNCTION_F(ty); static Span sp; @@ -448,6 +452,8 @@ namespace { { TU_MATCH_HDRA( (e->path.m_data), {) TU_ARMA(Generic, pe) { + if(!do_bind) + break; const auto& item = *reinterpret_cast< const ::HIR::TypeItem*>( get_type_pointer(sp, m_crate, pe.m_path, Target::TypeItem) ); TU_MATCH_DEF( ::HIR::TypeItem, (item), (e3), ( @@ -665,7 +671,7 @@ namespace { void visit(::HIR::ExprNode_StructLiteral& node) override { - upper_visitor.visit_path(node.m_path, ::HIR::Visitor::PathContext::TYPE); + upper_visitor.visit_type_inner(node.m_type, false); ::HIR::ExprVisitorDef::visit(node); } void visit(::HIR::ExprNode_ArraySized& node) override |