about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-05-10 05:29:13 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-05-10 07:54:52 +0000
commit33978b0728640f3345479bd3fc0055a36507cf32 (patch)
tree0ed68d954a0e7610fe58f4a9cc7d26d7efcd2ff5
parent3927ff4fecea17f56a57c59253afce3acdc89bec (diff)
downloadrust-33978b0728640f3345479bd3fc0055a36507cf32.tar.gz
rust-33978b0728640f3345479bd3fc0055a36507cf32.zip
Refactor `hir::lowering` API
-rw-r--r--src/librustc/hir/lowering.rs35
-rw-r--r--src/librustc_driver/driver.rs5
-rw-r--r--src/librustc_metadata/astencode.rs2
-rw-r--r--src/librustdoc/test.rs4
4 files changed, 24 insertions, 22 deletions
diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index 0c7123a570e..5ca99a7db67 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -91,30 +91,33 @@ impl Resolver for DummyResolver {
     }
 }
 
-impl<'a> LoweringContext<'a> {
-    pub fn new(id_assigner: &'a NodeIdAssigner,
-               c: Option<&Crate>,
-               resolver: &'a mut Resolver)
-               -> LoweringContext<'a> {
-        let crate_root = c.and_then(|c| {
-            if std_inject::no_core(c) {
-                None
-            } else if std_inject::no_std(c) {
-                Some("core")
-            } else {
-                Some("std")
-            }
-        });
+pub fn lower_crate(krate: &Crate, id_assigner: &NodeIdAssigner, resolver: &mut Resolver)
+                   -> hir::Crate {
+    LoweringContext {
+        crate_root: if std_inject::no_core(krate) {
+            None
+        } else if std_inject::no_std(krate) {
+            Some("core")
+        } else {
+            Some("std")
+        },
+        id_assigner: id_assigner,
+        parent_def: None,
+        resolver: resolver,
+    }.lower_crate(krate)
+}
 
+impl<'a> LoweringContext<'a> {
+    pub fn testing_context(id_assigner: &'a NodeIdAssigner, resolver: &'a mut Resolver) -> Self {
         LoweringContext {
-            crate_root: crate_root,
+            crate_root: None,
             id_assigner: id_assigner,
             parent_def: None,
             resolver: resolver,
         }
     }
 
-    pub fn lower_crate(&mut self, c: &Crate) -> hir::Crate {
+    fn lower_crate(&mut self, c: &Crate) -> hir::Crate {
         struct ItemLowerer<'lcx, 'interner: 'lcx> {
             items: BTreeMap<NodeId, hir::Item>,
             lctx: &'lcx mut LoweringContext<'interner>,
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index 492d36cfb31..01e2b410c1b 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -37,7 +37,7 @@ use rustc_typeck as typeck;
 use rustc_privacy;
 use rustc_plugin::registry::Registry;
 use rustc_plugin as plugin;
-use rustc::hir::lowering::LoweringContext;
+use rustc::hir::lowering::lower_crate;
 use rustc_passes::{no_asm, loops, consts, rvalues, static_recursion};
 use rustc_const_eval::check_match;
 use super::Compilation;
@@ -787,8 +787,7 @@ pub fn lower_and_resolve<'a>(sess: &Session,
 
         // Lower ast -> hir.
         let hir_forest = time(sess.time_passes(), "lowering ast -> hir", || {
-            let krate = LoweringContext::new(sess, Some(krate), &mut resolver).lower_crate(krate);
-            hir_map::Forest::new(krate, dep_graph)
+            hir_map::Forest::new(lower_crate(krate, sess, &mut resolver), dep_graph)
         });
 
         (ty::CrateAnalysis {
diff --git a/src/librustc_metadata/astencode.rs b/src/librustc_metadata/astencode.rs
index 8c17ef02615..2a847c4c195 100644
--- a/src/librustc_metadata/astencode.rs
+++ b/src/librustc_metadata/astencode.rs
@@ -1329,7 +1329,7 @@ fn mk_ctxt() -> parse::ParseSess {
 fn with_testing_context<T, F: FnOnce(&mut LoweringContext) -> T>(f: F) -> T {
     let assigner = FakeNodeIdAssigner;
     let mut resolver = DummyResolver;
-    let mut lcx = LoweringContext::new(&assigner, None, &mut resolver);
+    let mut lcx = LoweringContext::testing_context(&assigner, &mut resolver);
     f(&mut lcx)
 }
 
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs
index d4c08552edf..44c3ded4a11 100644
--- a/src/librustdoc/test.rs
+++ b/src/librustdoc/test.rs
@@ -28,7 +28,7 @@ use rustc::hir::map as hir_map;
 use rustc::session::{self, config};
 use rustc::session::config::{get_unstable_features_setting, OutputType};
 use rustc::session::search_paths::{SearchPaths, PathKind};
-use rustc::hir::lowering::{LoweringContext, DummyResolver};
+use rustc::hir::lowering::{lower_crate, DummyResolver};
 use rustc_back::dynamic_lib::DynamicLibrary;
 use rustc_back::tempdir::TempDir;
 use rustc_driver::{driver, Compilation};
@@ -98,7 +98,7 @@ pub fn run(input: &str,
     let defs = &RefCell::new(hir_map::collect_definitions(&krate));
 
     let mut dummy_resolver = DummyResolver;
-    let krate = LoweringContext::new(&sess, Some(&krate), &mut dummy_resolver).lower_crate(&krate);
+    let krate = lower_crate(&krate, &sess, &mut dummy_resolver);
 
     let opts = scrape_test_config(&krate);