summaryrefslogtreecommitdiff
path: root/src/hir_conv/bind.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-11-23 12:01:40 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-11-23 12:01:40 +0800
commit87df981564afc3debfe5b11842f375bfae5900ff (patch)
tree803047f1d90bf6b01ac6445bdb9c7e592d81466f /src/hir_conv/bind.cpp
parentfb2b1202e916e2e3f406d03005237b1d2447269f (diff)
downloadmrust-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.cpp8
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