summary refs log tree commit diff
path: root/compiler/rustc_metadata/src/creader.rs
diff options
context:
space:
mode:
authorMichael <michael.prantl@hotmail.de>2021-11-26 21:39:44 +0000
committerMichael <michael.prantl@hotmail.de>2021-12-01 21:59:54 +0000
commit2ca933301183b1e913802bc5710c0cb5218ada28 (patch)
treed8245bcf8b925372623abc3f1606a1aaede029a1 /compiler/rustc_metadata/src/creader.rs
parent62f4ce993e8aa788c8269d75aea2db84cafb1f9f (diff)
downloadrust-2ca933301183b1e913802bc5710c0cb5218ada28.tar.gz
rust-2ca933301183b1e913802bc5710c0cb5218ada28.zip
Improve suggestion for extern crate self error message
Diffstat (limited to 'compiler/rustc_metadata/src/creader.rs')
-rw-r--r--compiler/rustc_metadata/src/creader.rs30
1 files changed, 10 insertions, 20 deletions
diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs
index f3e7d84c1c5..2626a2e189c 100644
--- a/compiler/rustc_metadata/src/creader.rs
+++ b/compiler/rustc_metadata/src/creader.rs
@@ -9,7 +9,6 @@ use rustc_ast::{self as ast, *};
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_data_structures::svh::Svh;
 use rustc_data_structures::sync::Lrc;
-use rustc_errors::FatalError;
 use rustc_expand::base::SyntaxExtension;
 use rustc_hir::def_id::{CrateNum, LocalDefId, StableCrateId, LOCAL_CRATE};
 use rustc_hir::definitions::Definitions;
@@ -508,15 +507,6 @@ impl<'a> CrateLoader<'a> {
         }))
     }
 
-    fn resolve_crate_or_abort<'b>(
-        &'b mut self,
-        name: Symbol,
-        span: Span,
-        dep_kind: CrateDepKind,
-    ) -> CrateNum {
-        self.resolve_crate(name, span, dep_kind).unwrap_or_else(|| FatalError.raise())
-    }
-
     fn resolve_crate<'b>(
         &'b mut self,
         name: Symbol,
@@ -524,15 +514,15 @@ impl<'a> CrateLoader<'a> {
         dep_kind: CrateDepKind,
     ) -> Option<CrateNum> {
         self.used_extern_options.insert(name);
-        self.maybe_resolve_crate(name, dep_kind, None).map_or_else(
-            |err| {
+        match self.maybe_resolve_crate(name, dep_kind, None) {
+            Ok(cnum) => Some(cnum),
+            Err(err) => {
                 let missing_core =
                     self.maybe_resolve_crate(sym::core, CrateDepKind::Explicit, None).is_err();
                 err.report(&self.sess, span, missing_core);
                 None
-            },
-            |cnum| Some(cnum),
-        )
+            }
+        }
     }
 
     fn maybe_resolve_crate<'b>(
@@ -765,7 +755,7 @@ impl<'a> CrateLoader<'a> {
         };
         info!("panic runtime not found -- loading {}", name);
 
-        let cnum = self.resolve_crate_or_abort(name, DUMMY_SP, CrateDepKind::Implicit);
+        let Some(cnum) = self.resolve_crate(name, DUMMY_SP, CrateDepKind::Implicit) else { return; };
         let data = self.cstore.get_crate_data(cnum);
 
         // Sanity check the loaded crate to ensure it is indeed a panic runtime
@@ -805,7 +795,7 @@ impl<'a> CrateLoader<'a> {
             );
         }
 
-        let cnum = self.resolve_crate_or_abort(name, DUMMY_SP, CrateDepKind::Implicit);
+        let Some(cnum) = self.resolve_crate(name, DUMMY_SP, CrateDepKind::Implicit) else { return; };
         let data = self.cstore.get_crate_data(cnum);
 
         // Sanity check the loaded crate to ensure it is indeed a profiler runtime
@@ -1043,8 +1033,8 @@ impl<'a> CrateLoader<'a> {
         }
     }
 
-    pub fn process_path_extern(&mut self, name: Symbol, span: Span) -> CrateNum {
-        let cnum = self.resolve_crate_or_abort(name, span, CrateDepKind::Explicit);
+    pub fn process_path_extern(&mut self, name: Symbol, span: Span) -> Option<CrateNum> {
+        let cnum = self.resolve_crate(name, span, CrateDepKind::Explicit)?;
 
         self.update_extern_crate(
             cnum,
@@ -1057,7 +1047,7 @@ impl<'a> CrateLoader<'a> {
             },
         );
 
-        cnum
+        Some(cnum)
     }
 
     pub fn maybe_process_path_extern(&mut self, name: Symbol) -> Option<CrateNum> {