diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-01-26 15:28:46 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-26 15:28:46 +0000 |
commit | fe828b4f931ca216a4b74322a4fdb527faada53e (patch) | |
tree | dfde57cc372423d880f94631ea80d9ef1e2c2b5f /gcc | |
parent | a91b12e2c4cffe8386b1b712f4a5748fe81d2e8c (diff) | |
parent | 01a07f7d3959ec8bd4474a6081ebae4454c1a229 (diff) | |
download | gcc-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.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 |