aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-resolve-path.cc
diff options
context:
space:
mode:
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