aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/hir/tree/rust-hir-pattern.h6
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-pattern.cc8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/rust/hir/tree/rust-hir-pattern.h b/gcc/rust/hir/tree/rust-hir-pattern.h
index 7129b5a..d994e37 100644
--- a/gcc/rust/hir/tree/rust-hir-pattern.h
+++ b/gcc/rust/hir/tree/rust-hir-pattern.h
@@ -1269,6 +1269,12 @@ public:
return PatternType::GROUPED;
}
+ std::unique_ptr<Pattern> &get_item () { return pattern_in_parens; }
+ const std::unique_ptr<Pattern> &get_item () const
+ {
+ return pattern_in_parens;
+ }
+
protected:
/* Use covariance to implement clone function as returning this object rather
* than base */
diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc
index 9bff8e3..2a033ba 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc
@@ -387,10 +387,12 @@ TypeCheckPattern::visit (HIR::IdentifierPattern &)
}
void
-TypeCheckPattern::visit (HIR::GroupedPattern &)
+TypeCheckPattern::visit (HIR::GroupedPattern &pattern)
{
- // TODO
- gcc_unreachable ();
+ TyTy::BaseType *inner_ty
+ = TypeCheckPattern::Resolve (pattern.get_item ().get (), parent);
+ infered = inner_ty->clone ();
+ infered->set_ref (pattern.get_pattern_mappings ().get_hirid ());
}
void