From 3a756fea50382b6beb3b4d2fcc593e59f0eadd8c Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Sun, 14 Feb 2016 12:30:38 -0500 Subject: [PATCH] Make the definite name of the local crate available in the tcx. --- src/librustc/middle/ty/context.rs | 10 ++++++++-- src/librustc_driver/driver.rs | 1 + src/librustc_driver/test.rs | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/librustc/middle/ty/context.rs b/src/librustc/middle/ty/context.rs index 03c13115aea..4e81297a789 100644 --- a/src/librustc/middle/ty/context.rs +++ b/src/librustc/middle/ty/context.rs @@ -43,7 +43,7 @@ use std::rc::Rc; use syntax::ast::{self, Name, NodeId}; use syntax::attr; -use syntax::parse::token::special_idents; +use syntax::parse::token::{self, special_idents}; use rustc_front::hir; @@ -415,6 +415,10 @@ pub struct TyCtxt<'tcx> { /// fragmented data to the set of unfragmented pieces that /// constitute it. pub fragment_infos: RefCell>>, + + /// The definite name of the current crate after taking into account + /// attributes, commandline parameters, etc. + pub crate_name: token::InternedString, } impl<'tcx> TyCtxt<'tcx> { @@ -511,6 +515,7 @@ pub fn create_and_enter(s: &'tcx Session, region_maps: RegionMaps, lang_items: middle::lang_items::LanguageItems, stability: stability::Index<'tcx>, + crate_name: &str, f: F) -> R where F: FnOnce(&TyCtxt<'tcx>) -> R { @@ -570,7 +575,8 @@ pub fn create_and_enter(s: &'tcx Session, const_qualif_map: RefCell::new(NodeMap()), custom_coerce_unsized_kinds: RefCell::new(DefIdMap()), cast_kinds: RefCell::new(NodeMap()), - fragment_infos: RefCell::new(DefIdMap()) + fragment_infos: RefCell::new(DefIdMap()), + crate_name: token::intern_and_get_ident(crate_name), }, f) } } diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index b75ccb3f7ee..1af01a41223 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -818,6 +818,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session, region_map, lang_items, index, + name, |tcx| { // passes are timed inside typeck try_with_f!(typeck::check_crate(tcx, trait_map), (tcx, None, analysis)); diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index 1a5e7cb54f2..111db3b1d38 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -146,6 +146,7 @@ fn test_env(source_string: &str, region_map, lang_items, index, + "test_crate", |tcx| { let infcx = infer::new_infer_ctxt(tcx, &tcx.tables, -- GitLab