summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-11-04 11:01:57 +0800
committerJohn Hodge <tpg@mutabah.net>2016-11-04 11:01:57 +0800
commit31fa2cffe520c2d09c3d623694d4e972d1a7f788 (patch)
tree93c5b8bbb987825b56750532e58ebd93ef7be529
parent72366722bcda90960f18d108cf2d523d4e7f0cd8 (diff)
downloadmrust-31fa2cffe520c2d09c3d623694d4e972d1a7f788.tar.gz
HIR Typecheck - Bind paths in StructLiteral
-rw-r--r--src/hir_conv/bind.cpp11
-rw-r--r--src/hir_typeck/expr_cs.cpp2
2 files changed, 12 insertions, 1 deletions
diff --git a/src/hir_conv/bind.cpp b/src/hir_conv/bind.cpp
index b15b08e0..91b2f038 100644
--- a/src/hir_conv/bind.cpp
+++ b/src/hir_conv/bind.cpp
@@ -410,6 +410,11 @@ namespace {
upper_visitor(uv)
{}
+ void visit_node_ptr(::HIR::ExprNodeP& node_ptr) override
+ {
+ upper_visitor.visit_type(node_ptr->m_res_type);
+ ::HIR::ExprVisitorDef::visit_node_ptr(node_ptr);
+ }
void visit(::HIR::ExprNode_Let& node) override
{
upper_visitor.visit_type(node.m_type);
@@ -446,6 +451,12 @@ namespace {
::HIR::ExprVisitorDef::visit(node);
}
+ void visit(::HIR::ExprNode_StructLiteral& node) override
+ {
+ upper_visitor.visit_generic_path(node.m_path, ::HIR::Visitor::PathContext::TYPE);
+ ::HIR::ExprVisitorDef::visit(node);
+ }
+
void visit(::HIR::ExprNode_Closure& node) override
{
upper_visitor.visit_type(node.m_return);
diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp
index 7312bb3b..9240cbde 100644
--- a/src/hir_typeck/expr_cs.cpp
+++ b/src/hir_typeck/expr_cs.cpp
@@ -1112,7 +1112,7 @@ namespace {
generics = &e->m_params;
)
)
- assert(fields_ptr);
+ ASSERT_BUG(node.span(), fields_ptr, "");
const ::HIR::t_struct_fields& fields = *fields_ptr;
const auto& ty_params = node.m_path.m_params.m_types;