diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-09-04 12:19:13 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 19:04:34 +0100 |
commit | 3713338d986b750a56ca60c9683727d972c47f90 (patch) | |
tree | 3edbe2495d92144e8dd0845c818e6f0a544e1f6e /gcc/rust/rust-session-manager.cc | |
parent | 86661b8d3d97d18a799468226f1b34d9682e9732 (diff) | |
download | gcc-3713338d986b750a56ca60c9683727d972c47f90.zip gcc-3713338d986b750a56ca60c9683727d972c47f90.tar.gz gcc-3713338d986b750a56ca60c9683727d972c47f90.tar.bz2 |
gccrs: Clarify package import procedure
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>
Diffstat (limited to 'gcc/rust/rust-session-manager.cc')
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 2a8ef97..63f839e 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -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) |