aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-01-15 11:55:54 +0000
committerCohenArthur <arthur.cohen@embecosm.com>2025-01-20 12:09:26 +0000
commit9c6e09e2f73c056ad30382a5d000d938e1dfd473 (patch)
tree4db682d02b4975922fb935c1be360f77894fddd0
parent1c47dbe119b33765ab151d54a1992fe3ff44fbe8 (diff)
downloadgcc-9c6e09e2f73c056ad30382a5d000d938e1dfd473.zip
gcc-9c6e09e2f73c056ad30382a5d000d938e1dfd473.tar.gz
gcc-9c6e09e2f73c056ad30382a5d000d938e1dfd473.tar.bz2
nr2.0: late: Better format PathInExpression resolution
gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Improve formatting.
-rw-r--r--gcc/rust/resolve/rust-late-name-resolver-2.0.cc18
1 files changed, 6 insertions, 12 deletions
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 60b8952..f3ee08f 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -218,19 +218,12 @@ Late::visit (AST::PathInExpression &expr)
// in a function item` error here?
// do we emit it in `get<Namespace::Labels>`?
- rust_debug ("[ARTHUR]: %s", expr.as_simple_path ().as_string ().c_str ());
+ auto resolved
+ = ctx.values.resolve_path (expr.get_segments ()).or_else ([&] () {
+ return ctx.types.resolve_path (expr.get_segments ());
+ });
- tl::optional<Rib::Definition> resolved = tl::nullopt;
-
- if (auto value = ctx.values.resolve_path (expr.get_segments ()))
- {
- resolved = value;
- }
- else if (auto type = ctx.types.resolve_path (expr.get_segments ()))
- {
- resolved = type;
- }
- else
+ if (!resolved)
{
rust_error_at (expr.get_locus (),
"could not resolve path expression: %qs",
@@ -244,6 +237,7 @@ Late::visit (AST::PathInExpression &expr)
expr.as_string ().c_str ());
return;
}
+
ctx.map_usage (Usage (expr.get_node_id ()),
Definition (resolved->get_node_id ()));
}