aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-01-15 11:55:54 +0000
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-21 12:57:51 +0100
commitadbbf12a8f86ecb5c288302069f929d85c6b45ad (patch)
tree3c1ff4c5092cf339d23094acb79b324dbb42b88a
parentadba3fff2d4e5538b2f924f11e947a6c13fcfaac (diff)
downloadgcc-adbbf12a8f86ecb5c288302069f929d85c6b45ad.zip
gcc-adbbf12a8f86ecb5c288302069f929d85c6b45ad.tar.gz
gcc-adbbf12a8f86ecb5c288302069f929d85c6b45ad.tar.bz2
gccrs: 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 9da56ea..5aea6a4 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 ()));
}