From: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

gcc/rust/ChangeLog:

        * ast/rust-ast-collector.cc (TokenCollector::visit): Update label
        getter call.
        * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
        * ast/rust-ast.cc (BreakExpr::as_string): Likewise.
        * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
        * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Likewise.
        * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Likewise.
        * ast/rust-expr.h: Add optional getter and rename label getter to
        get_label_unchecked.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
---
 gcc/rust/ast/rust-ast-collector.cc              | 2 +-
 gcc/rust/ast/rust-ast-visitor.cc                | 2 +-
 gcc/rust/ast/rust-ast.cc                        | 2 +-
 gcc/rust/ast/rust-expr.h                        | 7 +++++--
 gcc/rust/hir/rust-ast-lower-expr.cc             | 2 +-
 gcc/rust/resolve/rust-ast-resolve-expr.cc       | 2 +-
 gcc/rust/resolve/rust-late-name-resolver-2.0.cc | 2 +-
 7 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/gcc/rust/ast/rust-ast-collector.cc 
b/gcc/rust/ast/rust-ast-collector.cc
index 165b7617fe4..8ee63752f32 100644
--- a/gcc/rust/ast/rust-ast-collector.cc
+++ b/gcc/rust/ast/rust-ast-collector.cc
@@ -1287,7 +1287,7 @@ TokenCollector::visit (BreakExpr &expr)
 {
   push (Rust::Token::make (BREAK, expr.get_locus ()));
   if (expr.has_label ())
-    visit (expr.get_label ());
+    visit (expr.get_label_unchecked ());
   if (expr.has_break_expr ())
     visit (expr.get_break_expr ());
 }
diff --git a/gcc/rust/ast/rust-ast-visitor.cc b/gcc/rust/ast/rust-ast-visitor.cc
index 702a176b266..9d524c3cc4c 100644
--- a/gcc/rust/ast/rust-ast-visitor.cc
+++ b/gcc/rust/ast/rust-ast-visitor.cc
@@ -486,7 +486,7 @@ DefaultASTVisitor::visit (AST::BreakExpr &expr)
 {
   visit_outer_attrs (expr);
   if (expr.has_label ())
-    visit (expr.get_label ());
+    visit (expr.get_label_unchecked ());
 
   if (expr.has_break_expr ())
     visit (expr.get_break_expr ());
diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc
index 670e6d2413d..06e0e7b0fbc 100644
--- a/gcc/rust/ast/rust-ast.cc
+++ b/gcc/rust/ast/rust-ast.cc
@@ -2183,7 +2183,7 @@ BreakExpr::as_string () const
   std::string str ("break ");
 
   if (has_label ())
-    str += get_label ().as_string () + " ";
+    str += get_label_unchecked ().as_string () + " ";
 
   if (has_break_expr ())
     str += break_expr->as_string ();
diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h
index 4c832f9a06f..84cdfdb4678 100644
--- a/gcc/rust/ast/rust-expr.h
+++ b/gcc/rust/ast/rust-expr.h
@@ -2982,8 +2982,11 @@ public:
     outer_attrs = std::move (new_attrs);
   }
 
-  LoopLabel &get_label () { return label.value (); }
-  const LoopLabel &get_label () const { return label.value (); }
+  LoopLabel &get_label_unchecked () { return label.value (); }
+  const LoopLabel &get_label_unchecked () const { return label.value (); }
+
+  tl::optional<LoopLabel> &get_label () { return label; }
+  const tl::optional<LoopLabel> &get_label () const { return label; }
 
   Expr::Kind get_expr_kind () const override { return Expr::Kind::Break; }
 
diff --git a/gcc/rust/hir/rust-ast-lower-expr.cc 
b/gcc/rust/hir/rust-ast-lower-expr.cc
index 944c0bbf4d1..3784e744f65 100644
--- a/gcc/rust/hir/rust-ast-lower-expr.cc
+++ b/gcc/rust/hir/rust-ast-lower-expr.cc
@@ -599,7 +599,7 @@ ASTLoweringExpr::visit (AST::BreakExpr &expr)
 {
   tl::optional<HIR::Lifetime> break_label = tl::nullopt;
   if (expr.has_label ())
-    break_label = lower_lifetime (expr.get_label ().get_lifetime ());
+    break_label = lower_lifetime (expr.get_label_unchecked ().get_lifetime ());
 
   HIR::Expr *break_expr
     = expr.has_break_expr ()
diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc 
b/gcc/rust/resolve/rust-ast-resolve-expr.cc
index 54d92854128..8070fc1b07c 100644
--- a/gcc/rust/resolve/rust-ast-resolve-expr.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc
@@ -471,7 +471,7 @@ ResolveExpr::visit (AST::BreakExpr &expr)
 {
   if (expr.has_label ())
     {
-      auto label = expr.get_label ().get_lifetime ();
+      auto label = expr.get_label_unchecked ().get_lifetime ();
       if (label.get_lifetime_type () != AST::Lifetime::LifetimeType::NAMED)
        {
          rust_error_at (label.get_locus (),
diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc 
b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
index b22be2a1a2d..f743e1e03f3 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -188,7 +188,7 @@ void
 Late::visit (AST::BreakExpr &expr)
 {
   if (expr.has_label ())
-    resolve_label (expr.get_label ().get_lifetime ());
+    resolve_label (expr.get_label_unchecked ().get_lifetime ());
 
   if (expr.has_break_expr ())
     {
-- 
2.49.0

Reply via email to