diff options
author | John Hodge <tpg@mutabah.net> | 2016-11-18 11:50:53 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-11-18 11:50:53 +0800 |
commit | dc24f382036ba3456510817899cd7ed0cac0a191 (patch) | |
tree | 888c1b68aa24045e6ce9aed13f7071776049b314 | |
parent | 2fe8d6af673577c7289efb3b51e93acfc360237e (diff) | |
download | mrust-dc24f382036ba3456510817899cd7ed0cac0a191.tar.gz |
HIR Typecheck - Expand associated types in function pointers
-rw-r--r-- | src/hir_typeck/expr_check.cpp | 2 | ||||
-rw-r--r-- | src/hir_typeck/helpers.cpp | 3 | ||||
-rw-r--r-- | src/hir_typeck/static.cpp | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/hir_typeck/expr_check.cpp b/src/hir_typeck/expr_check.cpp index 6153b197..b2cda61b 100644 --- a/src/hir_typeck/expr_check.cpp +++ b/src/hir_typeck/expr_check.cpp @@ -755,7 +755,7 @@ namespace { const auto& val_ty = node.m_value->m_res_type; TU_IFLET( ::HIR::TypeRef::Data, val_ty.m_data, Function, e, - + DEBUG("- Function pointer: " << val_ty); if( node.m_args.size() != e.m_arg_types.size() ) { ERROR(node.span(), E0000, "Incorrect number of arguments to call via " << val_ty); } diff --git a/src/hir_typeck/helpers.cpp b/src/hir_typeck/helpers.cpp index fa9a6a67..359e0c19 100644 --- a/src/hir_typeck/helpers.cpp +++ b/src/hir_typeck/helpers.cpp @@ -1683,6 +1683,9 @@ void TraitResolution::expand_associated_types_inplace(const Span& sp, ::HIR::Typ ), (Function, // Recurse? + for(auto& ty : e.m_arg_types) + expand_associated_types_inplace(sp, ty, stack); + expand_associated_types_inplace(sp, *e.m_rettype, stack); ), (Closure, // Recurse? diff --git a/src/hir_typeck/static.cpp b/src/hir_typeck/static.cpp index 651f0cfe..4a0e176d 100644 --- a/src/hir_typeck/static.cpp +++ b/src/hir_typeck/static.cpp @@ -630,6 +630,9 @@ void StaticTraitResolve::expand_associated_types_inner(const Span& sp, ::HIR::Ty ), (Function, // Recurse? + for(auto& ty : e.m_arg_types) + expand_associated_types_inner(sp, ty); + expand_associated_types_inner(sp, *e.m_rettype); ), (Closure, // Recurse? |