aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/typecheck/rust-hir-type-check-path.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/typecheck/rust-hir-type-check-path.cc')
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-path.cc16
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;
}