From ef8821745ee8755e948a2bce906c58216a6d6188 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Tue, 21 May 2024 10:38:16 +0200 Subject: 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 --- gcc/rust/hir/rust-ast-lower-expr.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'gcc/rust/hir') 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 (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 (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; -- cgit v1.1