@@ -875,6 +875,12 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
875875 /// consolidate multiple unresolved import errors into a single diagnostic.
876876 fn finalize_import ( & mut self , import : & ' b Import < ' b > ) -> Option < UnresolvedImportError > {
877877 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+ } ;
878884 let prev_ambiguity_errors_len = self . r . ambiguity_errors . len ( ) ;
879885 let path_res = self . r . resolve_path (
880886 & import. module_path ,
@@ -885,6 +891,9 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
885891 import. crate_lint ( ) ,
886892 ) ;
887893 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+ }
888897 import. vis . set ( orig_vis) ;
889898 if let PathResult :: Failed { .. } | PathResult :: NonModule ( ..) = path_res {
890899 // Consider erroneous imports used to avoid duplicate diagnostics.
@@ -895,8 +904,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
895904 // Consistency checks, analogous to `finalize_macro_resolutions`.
896905 if let Some ( initial_module) = import. imported_module . get ( ) {
897906 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" ) ;
900908 }
901909 } else {
902910 if self . r . privacy_errors . is_empty ( ) {
@@ -918,6 +926,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
918926 }
919927 PathResult :: Failed { is_error_from_last_segment : true , span, label, suggestion } => {
920928 if no_ambiguity {
929+ assert ! ( import. imported_module. get( ) . is_none( ) ) ;
921930 let err = match self . make_path_suggestion (
922931 span,
923932 import. module_path . clone ( ) ,
0 commit comments