@@ -42,7 +42,7 @@ use syntax_pos::{Span, DUMMY_SP};
42
42
use errors:: Applicability ;
43
43
44
44
use std:: cell:: Cell ;
45
- use std:: mem;
45
+ use std:: { mem, ptr } ;
46
46
use rustc_data_structures:: sync:: Lrc ;
47
47
48
48
#[ derive( Clone , Debug ) ]
@@ -594,11 +594,12 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
594
594
595
595
bitflags ! {
596
596
struct Flags : u8 {
597
- const MACRO_RULES = 1 << 0 ;
598
- const MODULE = 1 << 1 ;
599
- const PRELUDE = 1 << 2 ;
600
- const MISC_SUGGEST_SELF = 1 << 3 ;
601
- const MISC_FROM_PRELUDE = 1 << 4 ;
597
+ const MACRO_RULES = 1 << 0 ;
598
+ const MODULE = 1 << 1 ;
599
+ const PRELUDE = 1 << 2 ;
600
+ const MISC_SUGGEST_CRATE = 1 << 3 ;
601
+ const MISC_SUGGEST_SELF = 1 << 4 ;
602
+ const MISC_FROM_PRELUDE = 1 << 5 ;
602
603
}
603
604
}
604
605
@@ -684,7 +685,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
684
685
path_span,
685
686
) ;
686
687
match binding {
687
- Ok ( binding) => Ok ( ( binding, Flags :: MODULE ) ) ,
688
+ Ok ( binding) => Ok ( ( binding, Flags :: MODULE | Flags :: MISC_SUGGEST_CRATE ) ) ,
688
689
Err ( ( Determinacy :: Undetermined , Weak :: No ) ) =>
689
690
return Err ( Determinacy :: determined ( force) ) ,
690
691
Err ( ( Determinacy :: Undetermined , Weak :: Yes ) ) =>
@@ -706,7 +707,9 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
706
707
self . current_module = orig_current_module;
707
708
match binding {
708
709
Ok ( binding) => {
709
- let misc_flags = if module. is_normal ( ) {
710
+ let misc_flags = if ptr:: eq ( module, self . graph_root ) {
711
+ Flags :: MISC_SUGGEST_CRATE
712
+ } else if module. is_normal ( ) {
710
713
Flags :: MISC_SUGGEST_SELF
711
714
} else {
712
715
Flags :: empty ( )
@@ -857,7 +860,9 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
857
860
None
858
861
} ;
859
862
if let Some ( kind) = ambiguity_error_kind {
860
- let misc = |f : Flags | if f. contains ( Flags :: MISC_SUGGEST_SELF ) {
863
+ let misc = |f : Flags | if f. contains ( Flags :: MISC_SUGGEST_CRATE ) {
864
+ AmbiguityErrorMisc :: SuggestCrate
865
+ } else if f. contains ( Flags :: MISC_SUGGEST_SELF ) {
861
866
AmbiguityErrorMisc :: SuggestSelf
862
867
} else if f. contains ( Flags :: MISC_FROM_PRELUDE ) {
863
868
AmbiguityErrorMisc :: FromPrelude
@@ -866,7 +871,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
866
871
} ;
867
872
self . ambiguity_errors . push ( AmbiguityError {
868
873
kind,
869
- ident,
874
+ ident : orig_ident ,
870
875
b1 : innermost_binding,
871
876
b2 : binding,
872
877
misc1 : misc ( innermost_flags) ,
0 commit comments