diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-pattern.h | 6 | ||||
-rw-r--r-- | gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 8 |
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 |