aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/hir
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-05-21 10:38:16 +0200
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-06-12 09:56:01 +0000
commitef8821745ee8755e948a2bce906c58216a6d6188 (patch)
tree3f7926d3bf352d7716d00bf7d5566f31804e47c0 /gcc/rust/hir
parenta8e63c472f8169ef8e9ca8e7216dbdb0ddabb7ef (diff)
downloadgcc-ef8821745ee8755e948a2bce906c58216a6d6188.zip
gcc-ef8821745ee8755e948a2bce906c58216a6d6188.tar.gz
gcc-ef8821745ee8755e948a2bce906c58216a6d6188.tar.bz2
Prevent raw reference from being lowered silently
We do not handle those kind of references yet, we shall not let them pass as a regular reference. gcc/rust/ChangeLog: * ast/rust-expr.h: Add a getter for mutability. * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Panic when a raw reference is met. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust/hir')
-rw-r--r--gcc/rust/hir/rust-ast-lower-expr.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/rust/hir/rust-ast-lower-expr.cc b/gcc/rust/hir/rust-ast-lower-expr.cc
index 3b462ee..063a5fb 100644
--- a/gcc/rust/hir/rust-ast-lower-expr.cc
+++ b/gcc/rust/hir/rust-ast-lower-expr.cc
@@ -628,6 +628,9 @@ ASTLoweringExpr::visit (AST::ContinueExpr &expr)
void
ASTLoweringExpr::visit (AST::BorrowExpr &expr)
{
+ if (expr.is_raw_borrow ())
+ rust_unreachable ();
+
HIR::Expr *borrow_lvalue
= ASTLoweringExpr::translate (expr.get_borrowed_expr ());
@@ -638,9 +641,8 @@ ASTLoweringExpr::visit (AST::BorrowExpr &expr)
auto *borrow_expr
= new HIR::BorrowExpr (mapping, std::unique_ptr<HIR::Expr> (borrow_lvalue),
- expr.get_is_mut () ? Mutability::Mut
- : Mutability::Imm,
- expr.get_outer_attrs (), expr.get_locus ());
+ expr.get_mutability (), expr.get_outer_attrs (),
+ expr.get_locus ());
if (expr.get_is_double_borrow ())
{
@@ -652,9 +654,8 @@ ASTLoweringExpr::visit (AST::BorrowExpr &expr)
borrow_expr
= new HIR::BorrowExpr (mapping,
std::unique_ptr<HIR::Expr> (borrow_expr),
- expr.get_is_mut () ? Mutability::Mut
- : Mutability::Imm,
- expr.get_outer_attrs (), expr.get_locus ());
+ expr.get_mutability (), expr.get_outer_attrs (),
+ expr.get_locus ());
}
translated = borrow_expr;