]> git.lizzy.rs Git - rust.git/commitdiff
Emit crate disambiguators in save-analysis data
authorIgor Matuszewski <Xanewok@gmail.com>
Sun, 15 Oct 2017 21:27:17 +0000 (23:27 +0200)
committerIgor Matuszewski <Xanewok@gmail.com>
Fri, 27 Oct 2017 15:38:07 +0000 (17:38 +0200)
src/librustc_save_analysis/Cargo.toml
src/librustc_save_analysis/dump_visitor.rs
src/librustc_save_analysis/lib.rs

index 12897050164c92e84561dc6623d3a72608b64f96..a01659f3d46b799fd0ce65769b16a582ac10a0ed 100644 (file)
@@ -15,7 +15,7 @@ rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_typeck = { path = "../librustc_typeck" }
 syntax = { path = "../libsyntax" }
 syntax_pos = { path = "../libsyntax_pos" }
-rls-data = "0.11"
+rls-data = { git = "https://github.com/Xanewok/rls-data", branch = "crate-source" }
 rls-span = "0.4"
 # FIXME(#40527) should move rustc serialize out of tree
 rustc-serialize = "0.3"
index ca44a088e237917eaa4b3118da30dbbd67994403..13787dbadd04a8deff5f6f9fb8ffb135a644df05 100644 (file)
@@ -46,8 +46,8 @@
 use span_utils::SpanUtils;
 use sig;
 
-use rls_data::{CratePreludeData, Import, ImportKind, SpanData, Ref, RefKind,
-               Def, DefKind, Relation, RelationKind};
+use rls_data::{CratePreludeData, GlobalCrateId, Import, ImportKind, SpanData,
+               Ref, RefKind, Def, DefKind, Relation, RelationKind};
 
 macro_rules! down_cast_data {
     ($id:ident, $kind:ident, $sp:expr) => {
@@ -131,7 +131,10 @@ pub fn dump_crate_info(&mut self, name: &str, krate: &ast::Crate) {
         });
 
         let data = CratePreludeData {
-            crate_name: name.into(),
+            crate_id: GlobalCrateId {
+                name: name.into(),
+                disambiguator: self.tcx.sess.local_crate_disambiguator().to_string(),
+            },
             crate_root: crate_root.unwrap_or("<no source>".to_owned()),
             external_crates: self.save_ctxt.get_external_crates(),
             span: self.span_from_span(krate.span),
index 1c6007966afa3a5614c4336a7428e2a69eb1d856..886679f77d73e5c3fd3c673c532164126ae7de1c 100644 (file)
@@ -63,7 +63,7 @@
 use span_utils::SpanUtils;
 
 use rls_data::{Ref, RefKind, SpanData, MacroRef, Def, DefKind, Relation, RelationKind,
-               ExternalCrateData};
+               ExternalCrateData, GlobalCrateId};
 use rls_data::config::Config;
 
 
@@ -82,10 +82,6 @@ pub enum Data {
     RelationData(Relation),
 }
 
-macro_rules! option_try(
-    ($e:expr) => (match $e { Some(e) => e, None => return None })
-);
-
 impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
     fn span_from_span(&self, span: Span) -> SpanData {
         use rls_span::{Row, Column};
@@ -119,9 +115,12 @@ pub fn get_external_crates(&self) -> Vec<ExternalCrateData> {
             };
             let lo_loc = self.span_utils.sess.codemap().lookup_char_pos(span.lo());
             result.push(ExternalCrateData {
-                name: self.tcx.crate_name(n).to_string(),
-                num: n.as_u32(),
                 file_name: SpanUtils::make_path_string(&lo_loc.file.name),
+                num: n.as_u32(),
+                id: GlobalCrateId {
+                    name: self.tcx.crate_name(n).to_string(),
+                    disambiguator: self.tcx.crate_disambiguator(n).to_string(),
+                },
             });
         }
 
@@ -725,8 +724,8 @@ pub fn get_macro_use_data(&self, span: Span) -> Option<MacroRef> {
         // macro uses.
         let callsite = span.source_callsite();
         let callsite_span = self.span_from_span(callsite);
-        let callee = option_try!(span.source_callee());
-        let callee_span = option_try!(callee.span);
+        let callee = span.source_callee()?;
+        let callee_span = callee.span?;
 
         // Ignore attribute macros, their spans are usually mangled
         if let MacroAttribute(_) = callee.format {