File tree Expand file tree Collapse file tree 2 files changed +14
-3
lines changed
Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -845,6 +845,10 @@ impl<'a> ModuleS<'a> {
845845 _ => false ,
846846 }
847847 }
848+
849+ fn is_local ( & self ) -> bool {
850+ self . normal_ancestor_id . is_some ( )
851+ }
848852}
849853
850854impl < ' a > fmt:: Debug for ModuleS < ' a > {
@@ -1585,8 +1589,7 @@ impl<'a> Resolver<'a> {
15851589 ctxt = ctxt. source ( ) . 0 ;
15861590 }
15871591 let module = self . invocations [ & ctxt. source ( ) . 1 ] . module . get ( ) ;
1588- let crate_root =
1589- if module. def_id ( ) . unwrap ( ) . is_local ( ) { self . graph_root } else { module } ;
1592+ let crate_root = if module. is_local ( ) { self . graph_root } else { module } ;
15901593 return Success ( PrefixFound ( crate_root, 1 ) )
15911594 }
15921595
@@ -2569,7 +2572,8 @@ impl<'a> Resolver<'a> {
25692572 let unqualified_def = resolve_identifier_with_fallback ( self , None ) ;
25702573 let qualified_binding = self . resolve_module_relative_path ( span, segments, namespace) ;
25712574 match ( qualified_binding, unqualified_def) {
2572- ( Ok ( binding) , Some ( ref ud) ) if binding. def ( ) == ud. def => {
2575+ ( Ok ( binding) , Some ( ref ud) ) if binding. def ( ) == ud. def &&
2576+ segments[ 0 ] . identifier . name . as_str ( ) != "$crate" => {
25732577 self . session
25742578 . add_lint ( lint:: builtin:: UNUSED_QUALIFICATIONS ,
25752579 id,
Original file line number Diff line number Diff line change @@ -18,4 +18,11 @@ fn main() {
1818 use foo:: bar;
1919 foo:: bar ( ) ; //~ ERROR: unnecessary qualification
2020 bar ( ) ;
21+
22+ let _ = || -> Result < ( ) , ( ) > { try!( Ok ( ( ) ) ) ; Ok ( ( ) ) } ; // issue #37345
23+
24+ macro_rules! m {
25+ ( ) => { $crate:: foo:: bar( ) ; }
26+ }
27+ m ! ( ) ; // issue #37357
2128}
You can’t perform that action at this time.
0 commit comments