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
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-24 13:06:55 +0100
commit8d883fbc5536f2b727a3ab7899c5b7dbccdfb7aa (patch)
tree7c938ef88ff183db6109865652465d057b5a03f1 /gcc/rust/backend/rust-compile-resolve-path.cc
parentd14bb437ed4731a42ad3a70a2f6b5216515bc804 (diff)
downloadgcc-8d883fbc5536f2b727a3ab7899c5b7dbccdfb7aa.zip
gcc-8d883fbc5536f2b727a3ab7899c5b7dbccdfb7aa.tar.gz
gcc-8d883fbc5536f2b727a3ab7899c5b7dbccdfb7aa.tar.bz2
gccrs: 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 d248ee2..eb897b7 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