From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id D576E3858CDA; Tue, 7 Feb 2023 17:54:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D576E3858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675792479; bh=Paund+nnqgp0DR11lWMTxaqLWtyjnzfyjilVcXtxUiQ=; h=From:To:Subject:Date:From; b=hHQWoA/GoHwi/D1AijcJ66Ne+foFwrs+kZZquEWj5RjmBT+uzeXsNp+ew0/EOTWF6 d0APEdsqTZ4dd0TDFhHtz1gZBw3R8DQo4aUlmaR7eAt/RjqzYhmbHEsXHjqOooELuY T9UFkaF8gzZ0UEnGh6rzPNA1s0ErrAfDpxHYRaCs= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] Merge #1818 X-Act-Checkin: gcc X-Git-Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com> X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 868b0626e50af583e396761d87522e3c58c412bd X-Git-Newrev: 8d96698ffcb5d716e9ab41ba0c1775adb3ef15fe Message-Id: <20230207175439.D576E3858CDA@sourceware.org> Date: Tue, 7 Feb 2023 17:54:39 +0000 (GMT) List-Id: https://gcc.gnu.org/g:8d96698ffcb5d716e9ab41ba0c1775adb3ef15fe commit 8d96698ffcb5d716e9ab41ba0c1775adb3ef15fe Merge: 868b0626e50 1b46cfb35ac Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com> Date: Fri Feb 3 20:17:06 2023 +0000 Merge #1818 1818: Implement lowering ReferencePattern from AST to HIR r=CohenArthur a=powerboat9 gcc/rust/ChangeLog: * ast/rust-pattern.h (ReferencePattern::get_has_two_amps): Add method. (ReferencePattern::get_is_mut): Add method. * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Add ReferencePattern visitor. * hir/rust-ast-lower-pattern.h (ASTLoweringPattern::visit): Add ReferencePattern visitor. Signed-off-by: Owen Avery Partially addresses #1813 Co-authored-by: Owen Avery Diff: gcc/rust/ast/rust-pattern.h | 4 ++++ gcc/rust/hir/rust-ast-lower-pattern.cc | 29 +++++++++++++++++++++++++++++ gcc/rust/hir/rust-ast-lower-pattern.h | 1 + gcc/rust/hir/tree/rust-hir-full-test.cc | 5 ----- gcc/rust/hir/tree/rust-hir-pattern.h | 13 +++++-------- 5 files changed, 39 insertions(+), 13 deletions(-) diff --cc gcc/rust/hir/rust-ast-lower-pattern.cc index 237fa2ee746,9f673926f9d..57cf17c24ae --- a/gcc/rust/hir/rust-ast-lower-pattern.cc +++ b/gcc/rust/hir/rust-ast-lower-pattern.cc @@@ -246,8 -246,47 +246,37 @@@ ASTLoweringPattern::visit (AST::RangePa void ASTLoweringPattern::visit (AST::GroupedPattern &pattern) { - auto crate_num = mappings->get_current_crate (); - Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (), - mappings->get_next_hir_id (crate_num), - UNKNOWN_LOCAL_DEFID); - - HIR::Pattern *inner - = ASTLoweringPattern::translate (pattern.get_pattern_in_parens ().get ()); - - translated - = new HIR::GroupedPattern (mapping, std::unique_ptr (inner), - pattern.get_locus ()); + pattern.get_pattern_in_parens ()->accept_vis (*this); } + void + ASTLoweringPattern::visit (AST::ReferencePattern &pattern) + { + auto crate_num = mappings->get_current_crate (); + Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (), + mappings->get_next_hir_id (crate_num), + UNKNOWN_LOCAL_DEFID); + + HIR::Pattern *inner + = ASTLoweringPattern::translate (pattern.get_referenced_pattern ().get ()); + + translated + = new HIR::ReferencePattern (mapping, std::unique_ptr (inner), + pattern.get_is_mut () ? Mutability::Mut + : Mutability::Imm, + pattern.get_locus ()); + + if (pattern.is_double_reference ()) + { + Analysis::NodeMapping mapping2 (crate_num, pattern.get_node_id (), + mappings->get_next_hir_id (crate_num), + UNKNOWN_LOCAL_DEFID); + translated + = new HIR::ReferencePattern (mapping2, + std::unique_ptr (translated), + Mutability::Imm, pattern.get_locus ()); + } + } + } // namespace HIR } // namespace Rust