@@ -512,13 +512,17 @@ impl<'a> CrateLoader<'a> {
512
512
name : Symbol ,
513
513
span : Span ,
514
514
dep_kind : CrateDepKind ,
515
- ) -> CrateNum {
515
+ ) -> Option < CrateNum > {
516
516
self . used_extern_options . insert ( name) ;
517
- self . maybe_resolve_crate ( name, dep_kind, None ) . unwrap_or_else ( |err| {
518
- let missing_core =
519
- self . maybe_resolve_crate ( sym:: core, CrateDepKind :: Explicit , None ) . is_err ( ) ;
520
- err. report ( & self . sess , span, missing_core)
521
- } )
517
+ match self . maybe_resolve_crate ( name, dep_kind, None ) {
518
+ Ok ( cnum) => Some ( cnum) ,
519
+ Err ( err) => {
520
+ let missing_core =
521
+ self . maybe_resolve_crate ( sym:: core, CrateDepKind :: Explicit , None ) . is_err ( ) ;
522
+ err. report ( & self . sess , span, missing_core) ;
523
+ None
524
+ }
525
+ }
522
526
}
523
527
524
528
fn maybe_resolve_crate < ' b > (
@@ -751,7 +755,7 @@ impl<'a> CrateLoader<'a> {
751
755
} ;
752
756
info ! ( "panic runtime not found -- loading {}" , name) ;
753
757
754
- let cnum = self . resolve_crate ( name, DUMMY_SP , CrateDepKind :: Implicit ) ;
758
+ let Some ( cnum) = self . resolve_crate ( name, DUMMY_SP , CrateDepKind :: Implicit ) else { return ; } ;
755
759
let data = self . cstore . get_crate_data ( cnum) ;
756
760
757
761
// Sanity check the loaded crate to ensure it is indeed a panic runtime
@@ -791,7 +795,7 @@ impl<'a> CrateLoader<'a> {
791
795
) ;
792
796
}
793
797
794
- let cnum = self . resolve_crate ( name, DUMMY_SP , CrateDepKind :: Implicit ) ;
798
+ let Some ( cnum) = self . resolve_crate ( name, DUMMY_SP , CrateDepKind :: Implicit ) else { return ; } ;
795
799
let data = self . cstore . get_crate_data ( cnum) ;
796
800
797
801
// Sanity check the loaded crate to ensure it is indeed a profiler runtime
@@ -991,7 +995,7 @@ impl<'a> CrateLoader<'a> {
991
995
item : & ast:: Item ,
992
996
definitions : & Definitions ,
993
997
def_id : LocalDefId ,
994
- ) -> CrateNum {
998
+ ) -> Option < CrateNum > {
995
999
match item. kind {
996
1000
ast:: ItemKind :: ExternCrate ( orig_name) => {
997
1001
debug ! (
@@ -1011,7 +1015,7 @@ impl<'a> CrateLoader<'a> {
1011
1015
CrateDepKind :: Explicit
1012
1016
} ;
1013
1017
1014
- let cnum = self . resolve_crate ( name, item. span , dep_kind) ;
1018
+ let cnum = self . resolve_crate ( name, item. span , dep_kind) ? ;
1015
1019
1016
1020
let path_len = definitions. def_path ( def_id) . data . len ( ) ;
1017
1021
self . update_extern_crate (
@@ -1023,14 +1027,14 @@ impl<'a> CrateLoader<'a> {
1023
1027
dependency_of : LOCAL_CRATE ,
1024
1028
} ,
1025
1029
) ;
1026
- cnum
1030
+ Some ( cnum)
1027
1031
}
1028
1032
_ => bug ! ( ) ,
1029
1033
}
1030
1034
}
1031
1035
1032
- pub fn process_path_extern ( & mut self , name : Symbol , span : Span ) -> CrateNum {
1033
- let cnum = self . resolve_crate ( name, span, CrateDepKind :: Explicit ) ;
1036
+ pub fn process_path_extern ( & mut self , name : Symbol , span : Span ) -> Option < CrateNum > {
1037
+ let cnum = self . resolve_crate ( name, span, CrateDepKind :: Explicit ) ? ;
1034
1038
1035
1039
self . update_extern_crate (
1036
1040
cnum,
@@ -1043,7 +1047,7 @@ impl<'a> CrateLoader<'a> {
1043
1047
} ,
1044
1048
) ;
1045
1049
1046
- cnum
1050
+ Some ( cnum)
1047
1051
}
1048
1052
1049
1053
pub fn maybe_process_path_extern ( & mut self , name : Symbol ) -> Option < CrateNum > {
0 commit comments