diff options
Diffstat (limited to 'gcc/rust/typecheck/rust-hir-type-check-path.cc')
-rw-r--r-- | gcc/rust/typecheck/rust-hir-type-check-path.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/rust/typecheck/rust-hir-type-check-path.cc b/gcc/rust/typecheck/rust-hir-type-check-path.cc index 7dfa936..ea7d842 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-path.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-path.cc @@ -141,8 +141,12 @@ TypeCheckExpr::visit (HIR::QualifiedPathInExpression &expr) infered = new TyTy::ErrorType (expr.get_mappings ().get_hirid ()); return; } + std::vector<TyTy::Region> regions; + infered = SubstMapper::Resolve (infered, expr.get_locus (), - &item_seg.get_generic_args ()); + &item_seg.get_generic_args (), + context->regions_from_generic_args ( + item_seg.get_generic_args ())); } // continue on as a path-in-expression @@ -298,7 +302,9 @@ TypeCheckExpr::resolve_root_path (HIR::PathInExpression &expr, size_t *offset, if (seg.has_generic_args ()) { lookup = SubstMapper::Resolve (lookup, expr.get_locus (), - &seg.get_generic_args ()); + &seg.get_generic_args (), + context->regions_from_generic_args ( + seg.get_generic_args ())); if (lookup->get_kind () == TyTy::TypeKind::ERROR) return new TyTy::ErrorType (expr.get_mappings ().get_hirid ()); } @@ -471,8 +477,10 @@ TypeCheckExpr::resolve_segments (NodeId root_resolved_node_id, if (seg.has_generic_args ()) { - tyseg = SubstMapper::Resolve (tyseg, expr_locus, - &seg.get_generic_args ()); + tyseg + = SubstMapper::Resolve (tyseg, expr_locus, &seg.get_generic_args (), + context->regions_from_generic_args ( + seg.get_generic_args ())); if (tyseg->get_kind () == TyTy::TypeKind::ERROR) return; } |