]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Some assorted tweaks and bug fixes
authorOwen Avery <powerboat9.gamer@gmail.com>
Sat, 11 Jan 2025 05:15:05 +0000 (00:15 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 28 Apr 2025 14:19:29 +0000 (16:19 +0200)
gcc/rust/ChangeLog:

* ast/rust-ast-visitor.cc
(DefaultASTVisitor::visit): Visit the loop labels of
WhileLetLoopExpr instances before visiting their scrutinee
expressions.
* resolve/rust-early-name-resolver-2.0.cc
(Early::resolve_glob_import): Pass the glob import's path
directly to NameResolutionContext::resolve_path.
* resolve/rust-toplevel-name-resolver-2.0.cc
(TopLevel::visit): Remove unnecessary call to
Identifier::as_string.
(flatten_glob): Improve handling of cases where a glob use tree
has no path.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/ast/rust-ast-visitor.cc
gcc/rust/resolve/rust-early-name-resolver-2.0.cc
gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc

index 87e7b86573ba3296b49a8c1f34cbb0621cb1d4b4..dd42e39292f0d6c46c89a75ad9f876565a9887c5 100644 (file)
@@ -582,8 +582,8 @@ DefaultASTVisitor::visit (AST::WhileLetLoopExpr &expr)
   visit_outer_attrs (expr);
   for (auto &pattern : expr.get_patterns ())
     visit (pattern);
-  visit (expr.get_scrutinee_expr ());
   visit (expr.get_loop_label ());
+  visit (expr.get_scrutinee_expr ());
   visit (expr.get_loop_block ());
 }
 
index 7d048ea8289c633ebe8b2a5294ec0448b12fcb45..3390f09e2916140e2a904b089a85270d9c56e7a2 100644 (file)
@@ -70,8 +70,7 @@ Early::go (AST::Crate &crate)
 bool
 Early::resolve_glob_import (NodeId use_dec_id, TopLevel::ImportKind &&glob)
 {
-  auto resolved
-    = ctx.resolve_path (glob.to_resolve.get_segments (), Namespace::Types);
+  auto resolved = ctx.resolve_path (glob.to_resolve, Namespace::Types);
   if (!resolved.has_value ())
     return false;
 
index ba37dee88faf0f0eff90c711929b2c9f894770d5..2f036fe40b3fa218821a2ac0106c24df399faa96 100644 (file)
@@ -135,8 +135,7 @@ TopLevel::visit (AST::Module &module)
 void
 TopLevel::visit (AST::Trait &trait)
 {
-  insert_or_error_out (trait.get_identifier ().as_string (), trait,
-                      Namespace::Types);
+  insert_or_error_out (trait.get_identifier (), trait, Namespace::Types);
 
   DefaultResolver::visit (trait);
 }
@@ -548,6 +547,8 @@ flatten_glob (const AST::UseTreeGlob &glob, std::vector<AST::SimplePath> &paths,
 {
   if (glob.has_path ())
     paths.emplace_back (glob.get_path ());
+  else
+    paths.emplace_back (AST::SimplePath ({}, false, glob.get_locus ()));
 }
 
 void