]> git.lizzy.rs Git - rust.git/commitdiff
Refactor away a use of `ast_map.span_if_local()`
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Wed, 27 Apr 2016 01:18:04 +0000 (01:18 +0000)
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Wed, 27 Apr 2016 06:40:52 +0000 (06:40 +0000)
src/librustc_resolve/lib.rs

index 535c0cc7fe1916929979f0fb2f774a91534c570f..c63776ad9ba8875b43823aedd26dfa71bba74b08 100644 (file)
@@ -1819,11 +1819,21 @@ fn resolve_trait_reference(&mut self,
                                                                                       path_depth)));
 
                 // If it's a typedef, give a note
-                if let Def::TyAlias(did) = path_res.base_def {
+                if let Def::TyAlias(..) = path_res.base_def {
                     err.fileline_note(trait_path.span,
                                   "`type` aliases cannot be used for traits");
-                    if let Some(sp) = self.ast_map.span_if_local(did) {
-                        err.span_note(sp, "type defined here");
+
+                    let definition_site = {
+                        let segments = &trait_path.segments;
+                        if trait_path.global {
+                            self.resolve_crate_relative_path(trait_path.span, segments, TypeNS)
+                        } else {
+                            self.resolve_module_relative_path(trait_path.span, segments, TypeNS)
+                        }.map(|binding| binding.span).unwrap_or(codemap::DUMMY_SP)
+                    };
+
+                    if definition_site != codemap::DUMMY_SP {
+                        err.span_note(definition_site, "type defined here");
                     }
                 }
                 err.emit();