]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Clarify package import procedure
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Mon, 4 Sep 2023 10:19:13 +0000 (12:19 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:04:34 +0000 (19:04 +0100)
This part of the code is a bit tricky as it calls multiple functions
with almost the same name and slightly different behaviors. It was even
more with a meaningless variable name.

gcc/rust/ChangeLog:

* rust-session-manager.cc (Session::load_extern_crate): Change
variable name, add temporaries and comments.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/rust-session-manager.cc

index 2a8ef97213118f0208fefdcb79f625f290abd76c..63f839e7c9db53bc6d2a98beff8169329398f6bf 100644 (file)
@@ -1008,27 +1008,35 @@ Session::load_extern_crate (const std::string &crate_name, location_t locus)
   auto cli_extern_crate = extern_crates.find (crate_name);
 
   std::pair<std::unique_ptr<Import::Stream>, std::vector<ProcMacro::Procmacro>>
-    s;
+    package_result;
   if (cli_extern_crate != extern_crates.end ())
     {
       auto path = cli_extern_crate->second;
-      s = Import::try_package_in_directory (path, locus);
+      package_result = Import::try_package_in_directory (path, locus);
     }
   else
     {
-      s = Import::open_package (import_name, locus, relative_import_path);
+      package_result
+       = Import::open_package (import_name, locus, relative_import_path);
     }
-  if (s.first == NULL && s.second.empty ())
+
+  auto stream = std::move (package_result.first);
+  auto proc_macros = std::move (package_result.second);
+
+  if (stream == NULL          // No stream and
+      && proc_macros.empty ()) // no proc macros
     {
       rust_error_at (locus, "failed to locate crate %<%s%>",
                     import_name.c_str ());
       return UNKNOWN_NODEID;
     }
 
-  auto extern_crate = s.first == nullptr
-                       ? Imports::ExternCrate (crate_name, s.second)
-                       : Imports::ExternCrate (*s.first);
-  if (s.first != nullptr)
+  auto extern_crate
+    = stream == nullptr
+       ? Imports::ExternCrate (crate_name,
+                               proc_macros) // Import proc macros
+       : Imports::ExternCrate (*stream);    // Import from stream
+  if (stream != nullptr)
     {
       bool ok = extern_crate.load (locus);
       if (!ok)