aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-expr.cc
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-10-15 14:56:04 -0400
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-19 15:32:18 +0100
commit15b1c03198811a88b2796605d887f141b1bce49d (patch)
tree6b181a8e793f98241534cbf025f510a3ef172229 /gcc/rust/backend/rust-compile-expr.cc
parent7e4a3039c2485b6d34b06f3f01d93f6ee1b892d8 (diff)
downloadgcc-15b1c03198811a88b2796605d887f141b1bce49d.zip
gcc-15b1c03198811a88b2796605d887f141b1bce49d.tar.gz
gcc-15b1c03198811a88b2796605d887f141b1bce49d.tar.bz2
gccrs: Use name resolver 2.0 for compiling break/continue
gcc/rust/ChangeLog: * backend/rust-compile-expr.cc (CompileExpr::visit): Use name resolver 2.0 to lookup label definitions for break and continue statements when name resolution 2.0 is enabled. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
Diffstat (limited to 'gcc/rust/backend/rust-compile-expr.cc')
-rw-r--r--gcc/rust/backend/rust-compile-expr.cc41
1 files changed, 37 insertions, 4 deletions
diff --git a/gcc/rust/backend/rust-compile-expr.cc b/gcc/rust/backend/rust-compile-expr.cc
index 6458c42..7251cc8 100644
--- a/gcc/rust/backend/rust-compile-expr.cc
+++ b/gcc/rust/backend/rust-compile-expr.cc
@@ -753,8 +753,24 @@ CompileExpr::visit (HIR::BreakExpr &expr)
if (expr.has_label ())
{
NodeId resolved_node_id = UNKNOWN_NODEID;
- if (!ctx->get_resolver ()->lookup_resolved_label (
- expr.get_label ().get_mappings ().get_nodeid (), &resolved_node_id))
+ if (flag_name_resolution_2_0)
+ {
+ auto &nr_ctx
+ = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+ if (auto id
+ = nr_ctx.lookup (expr.get_label ().get_mappings ().get_nodeid ()))
+ resolved_node_id = *id;
+ }
+ else
+ {
+ NodeId tmp = UNKNOWN_NODEID;
+ if (ctx->get_resolver ()->lookup_resolved_label (
+ expr.get_label ().get_mappings ().get_nodeid (), &tmp))
+ resolved_node_id = tmp;
+ }
+
+ if (resolved_node_id == UNKNOWN_NODEID)
{
rust_error_at (
expr.get_label ().get_locus (),
@@ -799,8 +815,25 @@ CompileExpr::visit (HIR::ContinueExpr &expr)
if (expr.has_label ())
{
NodeId resolved_node_id = UNKNOWN_NODEID;
- if (!ctx->get_resolver ()->lookup_resolved_label (
- expr.get_label ().get_mappings ().get_nodeid (), &resolved_node_id))
+ if (flag_name_resolution_2_0)
+ {
+ auto &nr_ctx
+ = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+ if (auto id
+ = nr_ctx.lookup (expr.get_label ().get_mappings ().get_nodeid ()))
+ resolved_node_id = *id;
+ }
+ else
+ {
+ NodeId tmp = UNKNOWN_NODEID;
+
+ if (ctx->get_resolver ()->lookup_resolved_label (
+ expr.get_label ().get_mappings ().get_nodeid (), &tmp))
+ resolved_node_id = tmp;
+ }
+
+ if (resolved_node_id == UNKNOWN_NODEID)
{
rust_error_at (
expr.get_label ().get_locus (),