@@ -875,6 +875,12 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
875
875
/// consolidate multiple unresolved import errors into a single diagnostic.
876
876
fn finalize_import ( & mut self , import : & ' b Import < ' b > ) -> Option < UnresolvedImportError > {
877
877
let orig_vis = import. vis . replace ( ty:: Visibility :: Invisible ) ;
878
+ let orig_unusable_binding = match & import. kind {
879
+ ImportKind :: Single { target_bindings, .. } => {
880
+ Some ( mem:: replace ( & mut self . r . unusable_binding , target_bindings[ TypeNS ] . get ( ) ) )
881
+ }
882
+ _ => None ,
883
+ } ;
878
884
let prev_ambiguity_errors_len = self . r . ambiguity_errors . len ( ) ;
879
885
let path_res = self . r . resolve_path (
880
886
& import. module_path ,
@@ -885,6 +891,9 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
885
891
import. crate_lint ( ) ,
886
892
) ;
887
893
let no_ambiguity = self . r . ambiguity_errors . len ( ) == prev_ambiguity_errors_len;
894
+ if let Some ( orig_unusable_binding) = orig_unusable_binding {
895
+ self . r . unusable_binding = orig_unusable_binding;
896
+ }
888
897
import. vis . set ( orig_vis) ;
889
898
if let PathResult :: Failed { .. } | PathResult :: NonModule ( ..) = path_res {
890
899
// Consider erroneous imports used to avoid duplicate diagnostics.
@@ -895,8 +904,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
895
904
// Consistency checks, analogous to `finalize_macro_resolutions`.
896
905
if let Some ( initial_module) = import. imported_module . get ( ) {
897
906
if !ModuleOrUniformRoot :: same_def ( module, initial_module) && no_ambiguity {
898
- let msg = "inconsistent resolution for an import" ;
899
- self . r . session . span_err ( import. span , msg) ;
907
+ span_bug ! ( import. span, "inconsistent resolution for an import" ) ;
900
908
}
901
909
} else {
902
910
if self . r . privacy_errors . is_empty ( ) {
@@ -918,6 +926,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
918
926
}
919
927
PathResult :: Failed { is_error_from_last_segment : true , span, label, suggestion } => {
920
928
if no_ambiguity {
929
+ assert ! ( import. imported_module. get( ) . is_none( ) ) ;
921
930
let err = match self . make_path_suggestion (
922
931
span,
923
932
import. module_path . clone ( ) ,
0 commit comments