From 31fa2cffe520c2d09c3d623694d4e972d1a7f788 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 4 Nov 2016 11:01:57 +0800 Subject: HIR Typecheck - Bind paths in StructLiteral --- src/hir_conv/bind.cpp | 11 +++++++++++ src/hir_typeck/expr_cs.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3