aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2023-01-26 15:28:46 +0000
committerGitHub <noreply@github.com>2023-01-26 15:28:46 +0000
commitfe828b4f931ca216a4b74322a4fdb527faada53e (patch)
treedfde57cc372423d880f94631ea80d9ef1e2c2b5f /gcc
parenta91b12e2c4cffe8386b1b712f4a5748fe81d2e8c (diff)
parent01a07f7d3959ec8bd4474a6081ebae4454c1a229 (diff)
downloadgcc-fe828b4f931ca216a4b74322a4fdb527faada53e.zip
gcc-fe828b4f931ca216a4b74322a4fdb527faada53e.tar.gz
gcc-fe828b4f931ca216a4b74322a4fdb527faada53e.tar.bz2
Merge #1771
1771: Add type resolution for grouped patterns r=philberty a=powerboat9 Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com> Adds type resolution for GroupedPattern. Co-authored-by: Owen Avery <powerboat9.gamer@gmail.com>
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