aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-resolve-path.cc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-01-22 12:36:59 +0000
committerCohenArthur <arthur.cohen@embecosm.com>2025-01-28 17:35:37 +0000
commita7d273ca770382b941453a00f579abdf3e606f4a (patch)
tree7e680a3c18f4fe2c22f158fb1cd722b3d17d6951 /gcc/rust/backend/rust-compile-resolve-path.cc
parent068e33b4f8724c76c9515e890ec064dd49faa0f1 (diff)
downloadgcc-a7d273ca770382b941453a00f579abdf3e606f4a.zip
gcc-a7d273ca770382b941453a00f579abdf3e606f4a.tar.gz
gcc-a7d273ca770382b941453a00f579abdf3e606f4a.tar.bz2
hir: Adapt visitors to lang item PathInExpressions
gcc/rust/ChangeLog: * backend/rust-compile-resolve-path.cc (ResolvePathRef::visit): Adapt visitor to lang item HIR::PathInExpressions. * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): Likewise.
Diffstat (limited to 'gcc/rust/backend/rust-compile-resolve-path.cc')
-rw-r--r--gcc/rust/backend/rust-compile-resolve-path.cc22
1 files changed, 18 insertions, 4 deletions
diff --git a/gcc/rust/backend/rust-compile-resolve-path.cc b/gcc/rust/backend/rust-compile-resolve-path.cc
index 74e95e5..3af3431 100644
--- a/gcc/rust/backend/rust-compile-resolve-path.cc
+++ b/gcc/rust/backend/rust-compile-resolve-path.cc
@@ -35,15 +35,29 @@ namespace Compile {
void
ResolvePathRef::visit (HIR::QualifiedPathInExpression &expr)
{
- resolved = resolve (expr.get_final_segment ().get_segment (),
- expr.get_mappings (), expr.get_locus (), true);
+ auto final_segment = HIR::PathIdentSegment::create_error ();
+ if (expr.is_lang_item ())
+ final_segment
+ = HIR::PathIdentSegment (LangItem::ToString (expr.get_lang_item ()));
+ else
+ final_segment = expr.get_final_segment ().get_segment ();
+
+ resolved
+ = resolve (final_segment, expr.get_mappings (), expr.get_locus (), true);
}
void
ResolvePathRef::visit (HIR::PathInExpression &expr)
{
- resolved = resolve (expr.get_final_segment ().get_segment (),
- expr.get_mappings (), expr.get_locus (), false);
+ auto final_segment = HIR::PathIdentSegment::create_error ();
+ if (expr.is_lang_item ())
+ final_segment
+ = HIR::PathIdentSegment (LangItem::ToString (expr.get_lang_item ()));
+ else
+ final_segment = expr.get_final_segment ().get_segment ();
+
+ resolved
+ = resolve (final_segment, expr.get_mappings (), expr.get_locus (), true);
}
tree