about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKevin Butler <haqkrs@gmail.com>2014-05-28 20:36:05 +0100
committerKevin Butler <haqkrs@gmail.com>2014-05-30 17:55:42 +0100
commit09fc34066b202ce454c3230368de63be621be98c (patch)
tree56835089818f9b7067e38bf2bf3fa40b7934a2cd
parented5bf6621e9bdea92b026f438eb7b88bcc85860e (diff)
downloadrust-09fc34066b202ce454c3230368de63be621be98c.tar.gz
rust-09fc34066b202ce454c3230368de63be621be98c.zip
librustc: Fix snake case errors.
A number of functions/methods have been moved or renamed to align
better with rust standard conventions.

rustc::back::link::WriteOutputFile => write_output_file
rustc::middle::ty::EmptyBuiltinBounds => empty_builtin_bounds
rustc::middle::ty::AllBuiltinBounds => all_builtin_bounds
rustc::middle::liveness::IrMaps => IrMaps::new
rustc::middle::liveness::Liveness => Liveness::new
rustc::middle::resolve::NameBindings => NameBindings::new
rustc::middle::resolve::PrimitiveTypeTable => PrimitiveTypeTable::new
rustc::middle::resolve::Resolver => Resolver::new
rustc::middle::trans::datum::Datum => Datum::new
rustc::middle::trans::datum::DatumBlock => DatumBlock::new
rustc::middle::trans::datum::Rvalue => Rvalue::new
rustc::middle::typeck::infer::new_ValsAndBindings => ::infer::unify::ValsAndBindings::new
rustc::middle::typeck::infer::region_inference::RegionVarBindings => RegionVarBindings::new

[breaking-change]
-rw-r--r--src/compiletest/runtest.rs56
-rw-r--r--src/librustc/back/link.rs10
-rw-r--r--src/librustc/lib/llvm.rs3
-rw-r--r--src/librustc/metadata/csearch.rs5
-rw-r--r--src/librustc/metadata/decoder.rs50
-rw-r--r--src/librustc/metadata/encoder.rs2
-rw-r--r--src/librustc/metadata/tydecode.rs2
-rw-r--r--src/librustc/middle/astencode.rs14
-rw-r--r--src/librustc/middle/kind.rs3
-rw-r--r--src/librustc/middle/liveness.rs53
-rw-r--r--src/librustc/middle/resolve.rs175
-rw-r--r--src/librustc/middle/trans/_match.rs12
-rw-r--r--src/librustc/middle/trans/asm.rs8
-rw-r--r--src/librustc/middle/trans/base.rs2
-rw-r--r--src/librustc/middle/trans/build.rs3
-rw-r--r--src/librustc/middle/trans/closure.rs4
-rw-r--r--src/librustc/middle/trans/common.rs3
-rw-r--r--src/librustc/middle/trans/datum.rs60
-rw-r--r--src/librustc/middle/trans/debuginfo.rs4
-rw-r--r--src/librustc/middle/trans/expr.rs36
-rw-r--r--src/librustc/middle/trans/intrinsic.rs4
-rw-r--r--src/librustc/middle/trans/tvec.rs2
-rw-r--r--src/librustc/middle/ty.rs8
-rw-r--r--src/librustc/middle/typeck/astconv.rs6
-rw-r--r--src/librustc/middle/typeck/check/method.rs6
-rw-r--r--src/librustc/middle/typeck/check/mod.rs2
-rw-r--r--src/librustc/middle/typeck/check/vtable.rs6
-rw-r--r--src/librustc/middle/typeck/collect.rs6
-rw-r--r--src/librustc/middle/typeck/infer/mod.rs18
-rw-r--r--src/librustc/middle/typeck/infer/region_inference/mod.rs26
-rw-r--r--src/librustc/middle/typeck/infer/unify.rs11
31 files changed, 301 insertions, 299 deletions
diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs
index 8429e83a7aa..16149e9f277 100644
--- a/src/compiletest/runtest.rs
+++ b/src/compiletest/runtest.rs
@@ -73,7 +73,7 @@ fn run_cfail_test(config: &Config, props: &TestProps, testfile: &Path) {
     let proc_res = compile_test(config, props, testfile);
 
     if proc_res.status.success() {
-        fatal_ProcRes("compile-fail test compiled successfully!".to_string(),
+        fatal_proc_rec("compile-fail test compiled successfully!".to_string(),
                       &proc_res);
     }
 
@@ -97,7 +97,7 @@ fn run_rfail_test(config: &Config, props: &TestProps, testfile: &Path) {
         let proc_res = compile_test(config, props, testfile);
 
         if !proc_res.status.success() {
-            fatal_ProcRes("compilation failed!".to_string(), &proc_res);
+            fatal_proc_rec("compilation failed!".to_string(), &proc_res);
         }
 
         exec_compiled_test(config, props, testfile)
@@ -108,7 +108,7 @@ fn run_rfail_test(config: &Config, props: &TestProps, testfile: &Path) {
     // The value our Makefile configures valgrind to return on failure
     static VALGRIND_ERR: int = 100;
     if proc_res.status.matches_exit_status(VALGRIND_ERR) {
-        fatal_ProcRes("run-fail test isn't valgrind-clean!".to_string(),
+        fatal_proc_rec("run-fail test isn't valgrind-clean!".to_string(),
                       &proc_res);
     }
 
@@ -120,7 +120,7 @@ fn check_correct_failure_status(proc_res: &ProcRes) {
     // The value the rust runtime returns on failure
     static RUST_ERR: int = 101;
     if !proc_res.status.matches_exit_status(RUST_ERR) {
-        fatal_ProcRes(
+        fatal_proc_rec(
             format!("failure produced the wrong error: {}", proc_res.status),
             proc_res);
     }
@@ -131,19 +131,19 @@ fn run_rpass_test(config: &Config, props: &TestProps, testfile: &Path) {
         let mut proc_res = compile_test(config, props, testfile);
 
         if !proc_res.status.success() {
-            fatal_ProcRes("compilation failed!".to_string(), &proc_res);
+            fatal_proc_rec("compilation failed!".to_string(), &proc_res);
         }
 
         proc_res = exec_compiled_test(config, props, testfile);
 
         if !proc_res.status.success() {
-            fatal_ProcRes("test run failed!".to_string(), &proc_res);
+            fatal_proc_rec("test run failed!".to_string(), &proc_res);
         }
     } else {
         let proc_res = jit_test(config, props, testfile);
 
         if !proc_res.status.success() {
-            fatal_ProcRes("jit failed!".to_string(), &proc_res);
+            fatal_proc_rec("jit failed!".to_string(), &proc_res);
         }
     }
 }
@@ -172,7 +172,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
                                     "normal");
 
         if !proc_res.status.success() {
-            fatal_ProcRes(format!("pretty-printing failed in round {}", round),
+            fatal_proc_rec(format!("pretty-printing failed in round {}", round),
                           &proc_res);
         }
 
@@ -204,7 +204,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
     let proc_res = typecheck_source(config, props, testfile, actual);
 
     if !proc_res.status.success() {
-        fatal_ProcRes("pretty-printed source does not typecheck".to_string(),
+        fatal_proc_rec("pretty-printed source does not typecheck".to_string(),
                       &proc_res);
     }
     if props.no_pretty_expanded { return }
@@ -212,13 +212,13 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
     // additionally, run `--pretty expanded` and try to build it.
     let proc_res = print_source(config, props, testfile, (*srcs.get(round)).clone(), "expanded");
     if !proc_res.status.success() {
-        fatal_ProcRes(format!("pretty-printing (expanded) failed"), &proc_res);
+        fatal_proc_rec(format!("pretty-printing (expanded) failed"), &proc_res);
     }
 
     let ProcRes{ stdout: expanded_src, .. } = proc_res;
     let proc_res = typecheck_source(config, props, testfile, expanded_src);
     if !proc_res.status.success() {
-        fatal_ProcRes(format!("pretty-printed source (expanded) does \
+        fatal_proc_rec(format!("pretty-printed source (expanded) does \
                                not typecheck"),
                       &proc_res);
     }
@@ -326,7 +326,7 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) {
     // compile test file (it shoud have 'compile-flags:-g' in the header)
     let compiler_run_result = compile_test(config, props, testfile);
     if !compiler_run_result.status.success() {
-        fatal_ProcRes("compilation failed!".to_string(), &compiler_run_result);
+        fatal_proc_rec("compilation failed!".to_string(), &compiler_run_result);
     }
 
     let exe_file = make_exe_name(config, testfile);
@@ -517,7 +517,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
     // compile test file (it shoud have 'compile-flags:-g' in the header)
     let compile_result = compile_test(config, props, testfile);
     if !compile_result.status.success() {
-        fatal_ProcRes("compilation failed!".to_string(), &compile_result);
+        fatal_proc_rec("compilation failed!".to_string(), &compile_result);
     }
 
     let exe_file = make_exe_name(config, testfile);
@@ -560,7 +560,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
     let debugger_run_result = run_lldb(config, &exe_file, &debugger_script);
 
     if !debugger_run_result.status.success() {
-        fatal_ProcRes("Error while running LLDB".to_string(),
+        fatal_proc_rec("Error while running LLDB".to_string(),
                       &debugger_run_result);
     }
 
@@ -720,7 +720,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
             }
         }
         if i != num_check_lines {
-            fatal_ProcRes(format!("line not found in debugger output: {}",
+            fatal_proc_rec(format!("line not found in debugger output: {}",
                                   check_lines.get(i).unwrap()),
                           debugger_run_result);
         }
@@ -764,14 +764,14 @@ fn check_error_patterns(props: &TestProps,
     let missing_patterns =
         props.error_patterns.slice(next_err_idx, props.error_patterns.len());
     if missing_patterns.len() == 1u {
-        fatal_ProcRes(format!("error pattern '{}' not found!",
+        fatal_proc_rec(format!("error pattern '{}' not found!",
                               missing_patterns[0]),
                       proc_res);
     } else {
         for pattern in missing_patterns.iter() {
             error(format!("error pattern '{}' not found!", *pattern));
         }
-        fatal_ProcRes("multiple error patterns not found".to_string(),
+        fatal_proc_rec("multiple error patterns not found".to_string(),
                       proc_res);
     }
 }
@@ -779,7 +779,7 @@ fn check_error_patterns(props: &TestProps,
 fn check_no_compiler_crash(proc_res: &ProcRes) {
     for line in proc_res.stderr.as_slice().lines() {
         if line.starts_with("error: internal compiler error:") {
-            fatal_ProcRes("compiler encountered internal error".to_string(),
+            fatal_proc_rec("compiler encountered internal error".to_string(),
                           proc_res);
         }
     }
@@ -857,7 +857,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
         }
 
         if !was_expected && is_compiler_error_or_warning(line) {
-            fatal_ProcRes(format!("unexpected compiler error or warning: '{}'",
+            fatal_proc_rec(format!("unexpected compiler error or warning: '{}'",
                                   line),
                           proc_res);
         }
@@ -866,7 +866,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
     for (i, &flag) in found_flags.iter().enumerate() {
         if !flag {
             let ee = expected_errors.get(i);
-            fatal_ProcRes(format!("expected {} on line {} not found: {}",
+            fatal_proc_rec(format!("expected {} on line {} not found: {}",
                                   ee.kind, ee.line, ee.msg),
                           proc_res);
         }
@@ -1047,7 +1047,7 @@ fn compose_and_run_compiler(
                                      config.compile_lib_path.as_slice(),
                                      None);
         if !auxres.status.success() {
-            fatal_ProcRes(
+            fatal_proc_rec(
                 format!("auxiliary build of {} failed to compile: ",
                         abs_ab.display()),
                 &auxres);
@@ -1286,7 +1286,7 @@ fn error(err: String) { println!("\nerror: {}", err); }
 
 fn fatal(err: String) -> ! { error(err); fail!(); }
 
-fn fatal_ProcRes(err: String, proc_res: &ProcRes) -> ! {
+fn fatal_proc_rec(err: String, proc_res: &ProcRes) -> ! {
     print!("\n\
 error: {}\n\
 status: {}\n\
@@ -1562,35 +1562,35 @@ fn run_codegen_test(config: &Config, props: &TestProps,
 
     let mut proc_res = compile_test_and_save_bitcode(config, props, testfile);
     if !proc_res.status.success() {
-        fatal_ProcRes("compilation failed!".to_string(), &proc_res);
+        fatal_proc_rec("compilation failed!".to_string(), &proc_res);
     }
 
     proc_res = extract_function_from_bitcode(config, props, "test", testfile, "");
     if !proc_res.status.success() {
-        fatal_ProcRes("extracting 'test' function failed".to_string(),
+        fatal_proc_rec("extracting 'test' function failed".to_string(),
                       &proc_res);
     }
 
     proc_res = disassemble_extract(config, props, testfile, "");
     if !proc_res.status.success() {
-        fatal_ProcRes("disassembling extract failed".to_string(), &proc_res);
+        fatal_proc_rec("disassembling extract failed".to_string(), &proc_res);
     }
 
 
     let mut proc_res = compile_cc_with_clang_and_save_bitcode(config, props, testfile);
     if !proc_res.status.success() {
-        fatal_ProcRes("compilation failed!".to_string(), &proc_res);
+        fatal_proc_rec("compilation failed!".to_string(), &proc_res);
     }
 
     proc_res = extract_function_from_bitcode(config, props, "test", testfile, "clang");
     if !proc_res.status.success() {
-        fatal_ProcRes("extracting 'test' function failed".to_string(),
+        fatal_proc_rec("extracting 'test' function failed".to_string(),
                       &proc_res);
     }
 
     proc_res = disassemble_extract(config, props, testfile, "clang");
     if !proc_res.status.success() {
-        fatal_ProcRes("disassembling extract failed".to_string(), &proc_res);
+        fatal_proc_rec("disassembling extract failed".to_string(), &proc_res);
     }
 
     let base = output_base_name(config, testfile);
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 189562df2d0..5f53cd85705 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -69,7 +69,7 @@ pub fn llvm_err(sess: &Session, msg: String) -> ! {
     }
 }
 
-pub fn WriteOutputFile(
+pub fn write_output_file(
         sess: &Session,
         target: lib::llvm::TargetMachineRef,
         pm: lib::llvm::PassManagerRef,
@@ -90,7 +90,7 @@ pub fn WriteOutputFile(
 pub mod write {
 
     use back::lto;
-    use back::link::{WriteOutputFile, OutputType};
+    use back::link::{write_output_file, OutputType};
     use back::link::{OutputTypeAssembly, OutputTypeBitcode};
     use back::link::{OutputTypeExe, OutputTypeLlvmAssembly};
     use back::link::{OutputTypeObject};
@@ -310,7 +310,7 @@ pub mod write {
                             output.temp_path(OutputTypeAssembly)
                         };
                         with_codegen(tm, llmod, trans.no_builtins, |cpm| {
-                            WriteOutputFile(sess, tm, cpm, llmod, &path,
+                            write_output_file(sess, tm, cpm, llmod, &path,
                                             lib::llvm::AssemblyFile);
                         });
                     }
@@ -328,7 +328,7 @@ pub mod write {
                 match object_file {
                     Some(ref path) => {
                         with_codegen(tm, llmod, trans.no_builtins, |cpm| {
-                            WriteOutputFile(sess, tm, cpm, llmod, path,
+                            write_output_file(sess, tm, cpm, llmod, path,
                                             lib::llvm::ObjectFile);
                         });
                     }
@@ -339,7 +339,7 @@ pub mod write {
                                  trans.no_builtins, |cpm| {
                         let out = output.temp_path(OutputTypeObject)
                                         .with_extension("metadata.o");
-                        WriteOutputFile(sess, tm, cpm,
+                        write_output_file(sess, tm, cpm,
                                         trans.metadata_module, &out,
                                         lib::llvm::ObjectFile);
                     })
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs
index 95a2c558836..4a36dfd7842 100644
--- a/src/librustc/lib/llvm.rs
+++ b/src/librustc/lib/llvm.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -10,6 +10,7 @@
 
 #![allow(non_uppercase_pattern_statics)]
 #![allow(non_camel_case_types)]
+#![allow(non_snake_case_functions)]
 #![allow(dead_code)]
 
 use std::c_str::ToCStr;
diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs
index 781222a3a6e..74a804763e8 100644
--- a/src/librustc/metadata/csearch.rs
+++ b/src/librustc/metadata/csearch.rs
@@ -19,7 +19,8 @@ use middle::lang_items;
 use middle::ty;
 use middle::typeck;
 
-use reader = serialize::ebml::reader;
+use serialize::ebml;
+use serialize::ebml::reader;
 use std::rc::Rc;
 use syntax::ast;
 use syntax::ast_map;
@@ -206,7 +207,7 @@ pub fn get_field_type(tcx: &ty::ctxt, class_id: ast::DefId,
                       def: ast::DefId) -> ty::ty_param_bounds_and_ty {
     let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(class_id.krate);
-    let all_items = reader::get_doc(reader::Doc(cdata.data()), tag_items);
+    let all_items = reader::get_doc(ebml::Doc::new(cdata.data()), tag_items);
     let class_doc = expect(tcx.sess.diagnostic(),
                            decoder::maybe_find_item(class_id.node, all_items),
                            || {
diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs
index ddd493b2c13..56b320d2a07 100644
--- a/src/librustc/metadata/decoder.rs
+++ b/src/librustc/metadata/decoder.rs
@@ -99,7 +99,7 @@ fn find_item<'a>(item_id: ast::NodeId, items: ebml::Doc<'a>) -> ebml::Doc<'a> {
 // Looks up an item in the given metadata and returns an ebml doc pointing
 // to the item data.
 fn lookup_item<'a>(item_id: ast::NodeId, data: &'a [u8]) -> ebml::Doc<'a> {
-    let items = reader::get_doc(reader::Doc(data), tag_items);
+    let items = reader::get_doc(ebml::Doc::new(data), tag_items);
     find_item(item_id, items)
 }
 
@@ -383,7 +383,7 @@ pub fn get_trait_def(cdata: Cmd,
                                      tag_items_data_item_ty_param_bounds);
     let rp_defs = item_region_param_defs(item_doc, cdata);
     let sized = item_sized(item_doc);
-    let mut bounds = ty::EmptyBuiltinBounds();
+    let mut bounds = ty::empty_builtin_bounds();
     // Collect the builtin bounds from the encoded supertraits.
     // FIXME(#8559): They should be encoded directly.
     reader::tagged_docs(item_doc, tag_item_super_trait_ref, |trait_doc| {
@@ -443,7 +443,7 @@ pub fn get_impl_vtables(cdata: Cmd,
 {
     let item_doc = lookup_item(id, cdata.data());
     let vtables_doc = reader::get_doc(item_doc, tag_item_impl_vtables);
-    let mut decoder = reader::Decoder(vtables_doc);
+    let mut decoder = reader::Decoder::new(vtables_doc);
 
     typeck::impl_res {
         trait_vtables: decoder.read_vtable_res(tcx, cdata),
@@ -466,7 +466,7 @@ pub enum DefLike {
 
 /// Iterates over the language items in the given crate.
 pub fn each_lang_item(cdata: Cmd, f: |ast::NodeId, uint| -> bool) -> bool {
-    let root = reader::Doc(cdata.data());
+    let root = ebml::Doc::new(cdata.data());
     let lang_items = reader::get_doc(root, tag_lang_items);
     reader::tagged_docs(lang_items, tag_lang_items_item, |item_doc| {
         let id_doc = reader::get_doc(item_doc, tag_lang_items_item_id);
@@ -506,7 +506,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
             None => cdata
         };
 
-        let other_crates_items = reader::get_doc(reader::Doc(crate_data.data()), tag_items);
+        let other_crates_items = reader::get_doc(ebml::Doc::new(crate_data.data()), tag_items);
 
         // Get the item.
         match maybe_find_item(child_def_id.node, other_crates_items) {
@@ -534,7 +534,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
                                 |inherent_impl_def_id_doc| {
         let inherent_impl_def_id = item_def_id(inherent_impl_def_id_doc,
                                                cdata);
-        let items = reader::get_doc(reader::Doc(cdata.data()), tag_items);
+        let items = reader::get_doc(ebml::Doc::new(cdata.data()), tag_items);
         match maybe_find_item(inherent_impl_def_id.node, items) {
             None => {}
             Some(inherent_impl_doc) => {
@@ -599,7 +599,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
             None => cdata
         };
 
-        let other_crates_items = reader::get_doc(reader::Doc(crate_data.data()), tag_items);
+        let other_crates_items = reader::get_doc(ebml::Doc::new(crate_data.data()), tag_items);
 
         // Get the item.
         match maybe_find_item(child_def_id.node, other_crates_items) {
@@ -626,7 +626,7 @@ pub fn each_child_of_item(intr: Rc<IdentInterner>,
                           get_crate_data: GetCrateDataCb,
                           callback: |DefLike, ast::Ident, ast::Visibility|) {
     // Find the item.
-    let root_doc = reader::Doc(cdata.data());
+    let root_doc = ebml::Doc::new(cdata.data());
     let items = reader::get_doc(root_doc, tag_items);
     let item_doc = match maybe_find_item(id, items) {
         None => return,
@@ -647,7 +647,7 @@ pub fn each_top_level_item_of_crate(intr: Rc<IdentInterner>,
                                     callback: |DefLike,
                                                ast::Ident,
                                                ast::Visibility|) {
-    let root_doc = reader::Doc(cdata.data());
+    let root_doc = ebml::Doc::new(cdata.data());
     let misc_info_doc = reader::get_doc(root_doc, tag_misc_info);
     let crate_items_doc = reader::get_doc(misc_info_doc,
                                           tag_misc_info_crate_items);
@@ -696,7 +696,7 @@ pub fn maybe_get_item_ast(cdata: Cmd, tcx: &ty::ctxt, id: ast::NodeId,
 pub fn get_enum_variants(intr: Rc<IdentInterner>, cdata: Cmd, id: ast::NodeId,
                      tcx: &ty::ctxt) -> Vec<Rc<ty::VariantInfo>> {
     let data = cdata.data();
-    let items = reader::get_doc(reader::Doc(data), tag_items);
+    let items = reader::get_doc(ebml::Doc::new(data), tag_items);
     let item = find_item(id, items);
     let mut disr_val = 0;
     enum_variant_ids(item, cdata).iter().map(|did| {
@@ -829,7 +829,7 @@ pub fn get_item_variances(cdata: Cmd, id: ast::NodeId) -> ty::ItemVariances {
     let data = cdata.data();
     let item_doc = lookup_item(id, data);
     let variance_doc = reader::get_doc(item_doc, tag_item_variances);
-    let mut decoder = reader::Decoder(variance_doc);
+    let mut decoder = reader::Decoder::new(variance_doc);
     Decodable::decode(&mut decoder).unwrap()
 }
 
@@ -1078,7 +1078,7 @@ fn list_crate_attributes(md: ebml::Doc, hash: &Svh,
 }
 
 pub fn get_crate_attributes(data: &[u8]) -> Vec<ast::Attribute> {
-    get_attributes(reader::Doc(data))
+    get_attributes(ebml::Doc::new(data))
 }
 
 #[deriving(Clone)]
@@ -1090,7 +1090,7 @@ pub struct CrateDep {
 
 pub fn get_crate_deps(data: &[u8]) -> Vec<CrateDep> {
     let mut deps: Vec<CrateDep> = Vec::new();
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     let depsdoc = reader::get_doc(cratedoc, tag_crate_deps);
     let mut crate_num = 1;
     fn docstr(doc: ebml::Doc, tag_: uint) -> String {
@@ -1123,40 +1123,40 @@ fn list_crate_deps(data: &[u8], out: &mut io::Writer) -> io::IoResult<()> {
 }
 
 pub fn maybe_get_crate_hash(data: &[u8]) -> Option<Svh> {
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     reader::maybe_get_doc(cratedoc, tag_crate_hash).map(|doc| {
         Svh::new(doc.as_str_slice())
     })
 }
 
 pub fn get_crate_hash(data: &[u8]) -> Svh {
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     let hashdoc = reader::get_doc(cratedoc, tag_crate_hash);
     Svh::new(hashdoc.as_str_slice())
 }
 
 pub fn maybe_get_crate_id(data: &[u8]) -> Option<CrateId> {
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     reader::maybe_get_doc(cratedoc, tag_crate_crateid).map(|doc| {
         from_str(doc.as_str_slice()).unwrap()
     })
 }
 
 pub fn get_crate_triple(data: &[u8]) -> String {
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     let triple_doc = reader::maybe_get_doc(cratedoc, tag_crate_triple);
     triple_doc.expect("No triple in crate").as_str().to_string()
 }
 
 pub fn get_crate_id(data: &[u8]) -> CrateId {
-    let cratedoc = reader::Doc(data);
+    let cratedoc = ebml::Doc::new(data);
     let hashdoc = reader::get_doc(cratedoc, tag_crate_crateid);
     from_str(hashdoc.as_str_slice()).unwrap()
 }
 
 pub fn list_crate_metadata(bytes: &[u8], out: &mut io::Writer) -> io::IoResult<()> {
     let hash = get_crate_hash(bytes);
-    let md = reader::Doc(bytes);
+    let md = ebml::Doc::new(bytes);
     try!(list_crate_attributes(md, &hash, out));
     list_crate_deps(bytes, out)
 }
@@ -1183,7 +1183,7 @@ pub fn translate_def_id(cdata: Cmd, did: ast::DefId) -> ast::DefId {
 }
 
 pub fn each_impl(cdata: Cmd, callback: |ast::DefId|) {
-    let impls_doc = reader::get_doc(reader::Doc(cdata.data()), tag_impls);
+    let impls_doc = reader::get_doc(ebml::Doc::new(cdata.data()), tag_impls);
     let _ = reader::tagged_docs(impls_doc, tag_impls_impl, |impl_doc| {
         callback(item_def_id(impl_doc, cdata));
         true
@@ -1239,7 +1239,7 @@ pub fn get_trait_of_method(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt)
 
 pub fn get_native_libraries(cdata: Cmd)
                             -> Vec<(cstore::NativeLibaryKind, String)> {
-    let libraries = reader::get_doc(reader::Doc(cdata.data()),
+    let libraries = reader::get_doc(ebml::Doc::new(cdata.data()),
                                     tag_native_libraries);
     let mut result = Vec::new();
     reader::tagged_docs(libraries, tag_native_libraries_lib, |lib_doc| {
@@ -1255,12 +1255,12 @@ pub fn get_native_libraries(cdata: Cmd)
 }
 
 pub fn get_macro_registrar_fn(data: &[u8]) -> Option<ast::NodeId> {
-    reader::maybe_get_doc(reader::Doc(data), tag_macro_registrar_fn)
+    reader::maybe_get_doc(ebml::Doc::new(data), tag_macro_registrar_fn)
         .map(|doc| FromPrimitive::from_u32(reader::doc_as_u32(doc)).unwrap())
 }
 
 pub fn get_exported_macros(data: &[u8]) -> Vec<String> {
-    let macros = reader::get_doc(reader::Doc(data),
+    let macros = reader::get_doc(ebml::Doc::new(data),
                                  tag_exported_macros);
     let mut result = Vec::new();
     reader::tagged_docs(macros, tag_macro_def, |macro_doc| {
@@ -1273,7 +1273,7 @@ pub fn get_exported_macros(data: &[u8]) -> Vec<String> {
 pub fn get_dylib_dependency_formats(cdata: Cmd)
     -> Vec<(ast::CrateNum, cstore::LinkagePreference)>
 {
-    let formats = reader::get_doc(reader::Doc(cdata.data()),
+    let formats = reader::get_doc(ebml::Doc::new(cdata.data()),
                                   tag_dylib_dependency_formats);
     let mut result = Vec::new();
 
@@ -1299,7 +1299,7 @@ pub fn get_dylib_dependency_formats(cdata: Cmd)
 pub fn get_missing_lang_items(cdata: Cmd)
     -> Vec<lang_items::LangItem>
 {
-    let items = reader::get_doc(reader::Doc(cdata.data()), tag_lang_items);
+    let items = reader::get_doc(ebml::Doc::new(cdata.data()), tag_lang_items);
     let mut result = Vec::new();
     reader::tagged_docs(items, tag_lang_items_missing, |missing_doc| {
         let item: lang_items::LangItem =
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs
index 4012bbfef75..2295874a1b5 100644
--- a/src/librustc/metadata/encoder.rs
+++ b/src/librustc/metadata/encoder.rs
@@ -1813,7 +1813,7 @@ fn encode_metadata_inner(wr: &mut MemWriter, parms: EncodeParams, krate: &Crate)
         type_abbrevs: RefCell::new(HashMap::new()),
      };
 
-    let mut ebml_w = writer::Encoder(wr);
+    let mut ebml_w = writer::Encoder::new(wr);
 
     encode_crate_id(&mut ebml_w, &ecx.link_meta.crateid);
     encode_crate_triple(&mut ebml_w,
diff --git a/src/librustc/metadata/tydecode.rs b/src/librustc/metadata/tydecode.rs
index 9fd1fb67450..b5fc3828623 100644
--- a/src/librustc/metadata/tydecode.rs
+++ b/src/librustc/metadata/tydecode.rs
@@ -556,7 +556,7 @@ fn parse_type_param_def(st: &mut PState, conv: conv_did) -> ty::TypeParameterDef
 
 fn parse_bounds(st: &mut PState, conv: conv_did) -> ty::ParamBounds {
     let mut param_bounds = ty::ParamBounds {
-        builtin_bounds: ty::EmptyBuiltinBounds(),
+        builtin_bounds: ty::empty_builtin_bounds(),
         trait_bounds: Vec::new()
     };
     loop {
diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs
index dbc23348e2b..aec25071249 100644
--- a/src/librustc/middle/astencode.rs
+++ b/src/librustc/middle/astencode.rs
@@ -120,7 +120,7 @@ pub fn decode_inlined_item(cdata: &cstore::crate_metadata,
             path_as_str = Some(s);
             path_as_str.as_ref().map(|x| x.as_slice())
         });
-        let mut ast_dsr = reader::Decoder(ast_doc);
+        let mut ast_dsr = reader::Decoder::new(ast_doc);
         let from_id_range = Decodable::decode(&mut ast_dsr).unwrap();
         let to_id_range = reserve_id_range(&dcx.tcx.sess, from_id_range);
         let xcx = &ExtendedDecodeContext {
@@ -349,7 +349,7 @@ fn simplify_ast(ii: e::InlinedItemRef) -> ast::InlinedItem {
 
 fn decode_ast(par_doc: ebml::Doc) -> ast::InlinedItem {
     let chi_doc = par_doc.get(c::tag_tree as uint);
-    let mut d = reader::Decoder(chi_doc);
+    let mut d = reader::Decoder::new(chi_doc);
     Decodable::decode(&mut d).unwrap()
 }
 
@@ -395,7 +395,7 @@ fn renumber_and_map_ast(xcx: &ExtendedDecodeContext,
 // Encoding and decoding of ast::def
 
 fn decode_def(xcx: &ExtendedDecodeContext, doc: ebml::Doc) -> ast::Def {
-    let mut dsr = reader::Decoder(doc);
+    let mut dsr = reader::Decoder::new(doc);
     let def: ast::Def = Decodable::decode(&mut dsr).unwrap();
     def.tr(xcx)
 }
@@ -1317,7 +1317,7 @@ fn decode_side_tables(xcx: &ExtendedDecodeContext,
             }
             Some(value) => {
                 let val_doc = entry_doc.get(c::tag_table_val as uint);
-                let mut val_dsr = reader::Decoder(val_doc);
+                let mut val_dsr = reader::Decoder::new(val_doc);
                 let val_dsr = &mut val_dsr;
 
                 match value {
@@ -1402,7 +1402,7 @@ fn encode_item_ast(ebml_w: &mut Encoder, item: @ast::Item) {
 #[cfg(test)]
 fn decode_item_ast(par_doc: ebml::Doc) -> @ast::Item {
     let chi_doc = par_doc.get(c::tag_tree as uint);
-    let mut d = reader::Decoder(chi_doc);
+    let mut d = reader::Decoder::new(chi_doc);
     @Decodable::decode(&mut d).unwrap()
 }
 
@@ -1444,10 +1444,10 @@ fn roundtrip(in_item: Option<@ast::Item>) {
     let in_item = in_item.unwrap();
     let mut wr = MemWriter::new();
     {
-        let mut ebml_w = writer::Encoder(&mut wr);
+        let mut ebml_w = writer::Encoder::new(&mut wr);
         encode_item_ast(&mut ebml_w, in_item);
     }
-    let ebml_doc = reader::Doc(wr.get_ref());
+    let ebml_doc = ebml::Doc::new(wr.get_ref());
     let out_item = decode_item_ast(ebml_doc);
 
     assert!(in_item == out_item);
diff --git a/src/librustc/middle/kind.rs b/src/librustc/middle/kind.rs
index 2b82dd6fd57..b6614d15106 100644
--- a/src/librustc/middle/kind.rs
+++ b/src/librustc/middle/kind.rs
@@ -371,7 +371,7 @@ pub fn check_builtin_bounds(cx: &Context,
                             bounds: ty::BuiltinBounds,
                             any_missing: |ty::BuiltinBounds|) {
     let kind = ty::type_contents(cx.tcx, ty);
-    let mut missing = ty::EmptyBuiltinBounds();
+    let mut missing = ty::empty_builtin_bounds();
     for bound in bounds.iter() {
         if !kind.meets_bound(cx.tcx, bound) {
             missing.add(bound);
@@ -565,6 +565,7 @@ pub fn check_cast_for_escaping_regions(
             }
         });
 
+    #[allow(non_snake_case_functions)]
     fn is_ReScope(r: ty::Region) -> bool {
         match r {
             ty::ReScope(..) => true,
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs
index beb522802fe..e0d411f9f97 100644
--- a/src/librustc/middle/liveness.rs
+++ b/src/librustc/middle/liveness.rs
@@ -177,7 +177,7 @@ impl<'a> Visitor<()> for IrMaps<'a> {
 
 pub fn check_crate(tcx: &ty::ctxt,
                    krate: &Crate) {
-    visit::walk_crate(&mut IrMaps(tcx), krate, ());
+    visit::walk_crate(&mut IrMaps::new(tcx), krate, ());
     tcx.sess.abort_if_errors();
 }
 
@@ -260,21 +260,20 @@ struct IrMaps<'a> {
     lnks: Vec<LiveNodeKind>,
 }
 
-fn IrMaps<'a>(tcx: &'a ty::ctxt)
-              -> IrMaps<'a> {
-    IrMaps {
-        tcx: tcx,
-        num_live_nodes: 0,
-        num_vars: 0,
-        live_node_map: NodeMap::new(),
-        variable_map: NodeMap::new(),
-        capture_info_map: NodeMap::new(),
-        var_kinds: Vec::new(),
-        lnks: Vec::new(),
+impl<'a> IrMaps<'a> {
+    fn new(tcx: &'a ty::ctxt) -> IrMaps<'a> {
+        IrMaps {
+            tcx: tcx,
+            num_live_nodes: 0,
+            num_vars: 0,
+            live_node_map: NodeMap::new(),
+            variable_map: NodeMap::new(),
+            capture_info_map: NodeMap::new(),
+            var_kinds: Vec::new(),
+            lnks: Vec::new(),
+        }
     }
-}
 
-impl<'a> IrMaps<'a> {
     fn add_live_node(&mut self, lnk: LiveNodeKind) -> LiveNode {
         let ln = LiveNode(self.num_live_nodes);
         self.lnks.push(lnk);
@@ -365,7 +364,7 @@ fn visit_fn(ir: &mut IrMaps,
     let _i = ::util::common::indenter();
 
     // swap in a new set of IR maps for this function body:
-    let mut fn_maps = IrMaps(ir.tcx);
+    let mut fn_maps = IrMaps::new(ir.tcx);
 
     unsafe {
         debug!("creating fn_maps: {}", transmute::<&IrMaps, *IrMaps>(&fn_maps));
@@ -396,7 +395,7 @@ fn visit_fn(ir: &mut IrMaps,
     };
 
     // compute liveness
-    let mut lsets = Liveness(&mut fn_maps, specials);
+    let mut lsets = Liveness::new(&mut fn_maps, specials);
     let entry_ln = lsets.compute(decl, body);
 
     // check for various error conditions
@@ -584,19 +583,19 @@ struct Liveness<'a> {
     cont_ln: NodeMap<LiveNode>
 }
 
-fn Liveness<'a>(ir: &'a mut IrMaps<'a>, specials: Specials) -> Liveness<'a> {
-    Liveness {
-        ir: ir,
-        s: specials,
-        successors: Vec::from_elem(ir.num_live_nodes, invalid_node()),
-        users: Vec::from_elem(ir.num_live_nodes * ir.num_vars, invalid_users()),
-        loop_scope: Vec::new(),
-        break_ln: NodeMap::new(),
-        cont_ln: NodeMap::new(),
+impl<'a> Liveness<'a> {
+    fn new(ir: &'a mut IrMaps<'a>, specials: Specials) -> Liveness<'a> {
+        Liveness {
+            ir: ir,
+            s: specials,
+            successors: Vec::from_elem(ir.num_live_nodes, invalid_node()),
+            users: Vec::from_elem(ir.num_live_nodes * ir.num_vars, invalid_users()),
+            loop_scope: Vec::new(),
+            break_ln: NodeMap::new(),
+            cont_ln: NodeMap::new(),
+        }
     }
-}
 
-impl<'a> Liveness<'a> {
     fn live_node(&self, node_id: NodeId, span: Span) -> LiveNode {
         match self.ir.live_node_map.find(&node_id) {
           Some(&ln) => ln,
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index 1a29cff3cd6..077f61a34c6 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -549,6 +549,13 @@ enum TraitReferenceType {
 }
 
 impl NameBindings {
+    fn new() -> NameBindings {
+        NameBindings {
+            type_def: RefCell::new(None),
+            value_def: RefCell::new(None),
+        }
+    }
+
     /// Creates a new module in this set of name bindings.
     fn define_module(&self,
                      parent_link: ParentLink,
@@ -749,49 +756,42 @@ impl NameBindings {
     }
 }
 
-fn NameBindings() -> NameBindings {
-    NameBindings {
-        type_def: RefCell::new(None),
-        value_def: RefCell::new(None),
-    }
-}
-
 /// Interns the names of the primitive types.
 struct PrimitiveTypeTable {
     primitive_types: HashMap<Name, PrimTy>,
 }
 
 impl PrimitiveTypeTable {
+    fn new() -> PrimitiveTypeTable {
+        let mut table = PrimitiveTypeTable {
+            primitive_types: HashMap::new()
+        };
+
+        table.intern("bool",    TyBool);
+        table.intern("char",    TyChar);
+        table.intern("f32",     TyFloat(TyF32));
+        table.intern("f64",     TyFloat(TyF64));
+        table.intern("f128",    TyFloat(TyF128));
+        table.intern("int",     TyInt(TyI));
+        table.intern("i8",      TyInt(TyI8));
+        table.intern("i16",     TyInt(TyI16));
+        table.intern("i32",     TyInt(TyI32));
+        table.intern("i64",     TyInt(TyI64));
+        table.intern("str",     TyStr);
+        table.intern("uint",    TyUint(TyU));
+        table.intern("u8",      TyUint(TyU8));
+        table.intern("u16",     TyUint(TyU16));
+        table.intern("u32",     TyUint(TyU32));
+        table.intern("u64",     TyUint(TyU64));
+
+        table
+    }
+
     fn intern(&mut self, string: &str, primitive_type: PrimTy) {
         self.primitive_types.insert(token::intern(string), primitive_type);
     }
 }
 
-fn PrimitiveTypeTable() -> PrimitiveTypeTable {
-    let mut table = PrimitiveTypeTable {
-        primitive_types: HashMap::new()
-    };
-
-    table.intern("bool",    TyBool);
-    table.intern("char",    TyChar);
-    table.intern("f32",     TyFloat(TyF32));
-    table.intern("f64",     TyFloat(TyF64));
-    table.intern("f128",    TyFloat(TyF128));
-    table.intern("int",     TyInt(TyI));
-    table.intern("i8",      TyInt(TyI8));
-    table.intern("i16",     TyInt(TyI16));
-    table.intern("i32",     TyInt(TyI32));
-    table.intern("i64",     TyInt(TyI64));
-    table.intern("str",     TyStr);
-    table.intern("uint",    TyUint(TyU));
-    table.intern("u8",      TyUint(TyU8));
-    table.intern("u16",     TyUint(TyU16));
-    table.intern("u32",     TyUint(TyU32));
-    table.intern("u64",     TyUint(TyU64));
-
-    return table;
-}
-
 
 fn namespace_error_to_str(ns: NamespaceError) -> &'static str {
     match ns {
@@ -802,62 +802,6 @@ fn namespace_error_to_str(ns: NamespaceError) -> &'static str {
     }
 }
 
-fn Resolver<'a>(session: &'a Session,
-                lang_items: &'a LanguageItems,
-                crate_span: Span) -> Resolver<'a> {
-    let graph_root = NameBindings();
-
-    graph_root.define_module(NoParentLink,
-                             Some(DefId { krate: 0, node: 0 }),
-                             NormalModuleKind,
-                             false,
-                             true,
-                             crate_span);
-
-    let current_module = graph_root.get_module();
-
-    let this = Resolver {
-        session: session,
-        lang_items: lang_items,
-
-        // The outermost module has def ID 0; this is not reflected in the
-        // AST.
-
-        graph_root: graph_root,
-
-        method_map: RefCell::new(FnvHashMap::new()),
-        structs: FnvHashMap::new(),
-
-        unresolved_imports: 0,
-
-        current_module: current_module,
-        value_ribs: RefCell::new(Vec::new()),
-        type_ribs: RefCell::new(Vec::new()),
-        label_ribs: RefCell::new(Vec::new()),
-
-        current_trait_ref: None,
-        current_self_type: None,
-
-        self_ident: special_idents::self_,
-        type_self_ident: special_idents::type_self,
-
-        primitive_type_table: PrimitiveTypeTable(),
-
-        namespaces: vec!(TypeNS, ValueNS),
-
-        def_map: RefCell::new(NodeMap::new()),
-        export_map2: RefCell::new(NodeMap::new()),
-        trait_map: NodeMap::new(),
-        used_imports: HashSet::new(),
-        external_exports: DefIdSet::new(),
-        last_private: NodeMap::new(),
-
-        emit_errors: true,
-    };
-
-    this
-}
-
 /// The main resolver class.
 struct Resolver<'a> {
     session: &'a Session,
@@ -957,6 +901,57 @@ impl<'a, 'b> Visitor<()> for UnusedImportCheckVisitor<'a, 'b> {
 }
 
 impl<'a> Resolver<'a> {
+    fn new(session: &'a Session, lang_items: &'a LanguageItems, crate_span: Span) -> Resolver<'a> {
+        let graph_root = NameBindings::new();
+
+        graph_root.define_module(NoParentLink,
+                                 Some(DefId { krate: 0, node: 0 }),
+                                 NormalModuleKind,
+                                 false,
+                                 true,
+                                 crate_span);
+
+        let current_module = graph_root.get_module();
+
+        Resolver {
+            session: session,
+            lang_items: lang_items,
+
+            // The outermost module has def ID 0; this is not reflected in the
+            // AST.
+
+            graph_root: graph_root,
+
+            method_map: RefCell::new(FnvHashMap::new()),
+            structs: FnvHashMap::new(),
+
+            unresolved_imports: 0,
+
+            current_module: current_module,
+            value_ribs: RefCell::new(Vec::new()),
+            type_ribs: RefCell::new(Vec::new()),
+            label_ribs: RefCell::new(Vec::new()),
+
+            current_trait_ref: None,
+            current_self_type: None,
+
+            self_ident: special_idents::self_,
+            type_self_ident: special_idents::type_self,
+
+            primitive_type_table: PrimitiveTypeTable::new(),
+
+            namespaces: vec!(TypeNS, ValueNS),
+
+            def_map: RefCell::new(NodeMap::new()),
+            export_map2: RefCell::new(NodeMap::new()),
+            trait_map: NodeMap::new(),
+            used_imports: HashSet::new(),
+            external_exports: DefIdSet::new(),
+            last_private: NodeMap::new(),
+
+            emit_errors: true,
+        }
+    }
     /// The main name resolution procedure.
     fn resolve(&mut self, krate: &ast::Crate) {
         self.build_reduced_graph(krate);
@@ -1017,7 +1012,7 @@ impl<'a> Resolver<'a> {
         let child = module_.children.borrow().find_copy(&name.name);
         match child {
             None => {
-                let child = Rc::new(NameBindings());
+                let child = Rc::new(NameBindings::new());
                 module_.children.borrow_mut().insert(name.name, child.clone());
                 child
             }
@@ -5574,7 +5569,7 @@ pub fn resolve_crate(session: &Session,
                      lang_items: &LanguageItems,
                      krate: &Crate)
                   -> CrateMap {
-    let mut resolver = Resolver(session, lang_items, krate.span);
+    let mut resolver = Resolver::new(session, lang_items, krate.span);
     resolver.resolve(krate);
     let Resolver { def_map, export_map2, trait_map, last_private,
                    external_exports, .. } = resolver;
diff --git a/src/librustc/middle/trans/_match.rs b/src/librustc/middle/trans/_match.rs
index 494f6591d39..86ddd5e0e98 100644
--- a/src/librustc/middle/trans/_match.rs
+++ b/src/librustc/middle/trans/_match.rs
@@ -997,7 +997,7 @@ fn match_datum(bcx: &Block,
      */
 
     let ty = node_id_type(bcx, pat_id);
-    Datum(val, ty, Lvalue)
+    Datum::new(val, ty, Lvalue)
 }
 
 
@@ -1297,7 +1297,7 @@ fn store_non_ref_bindings<'a>(
         match binding_info.trmode {
             TrByValue(lldest) => {
                 let llval = Load(bcx, binding_info.llmatch); // get a T*
-                let datum = Datum(llval, binding_info.ty, Lvalue);
+                let datum = Datum::new(llval, binding_info.ty, Lvalue);
                 bcx = datum.store_to(bcx, lldest);
 
                 match opt_cleanup_scope {
@@ -1334,7 +1334,7 @@ fn insert_lllocals<'a>(bcx: &'a Block<'a>,
             TrByRef => binding_info.llmatch
         };
 
-        let datum = Datum(llval, binding_info.ty, Lvalue);
+        let datum = Datum::new(llval, binding_info.ty, Lvalue);
         fcx.schedule_drop_mem(cleanup_scope, llval, binding_info.ty);
 
         debug!("binding {:?} to {}",
@@ -2081,7 +2081,7 @@ pub fn store_arg<'a>(mut bcx: &'a Block<'a>,
                 // we emit extra-debug-info, which requires local allocas :(.
                 let arg_val = arg.add_clean(bcx.fcx, arg_scope);
                 bcx.fcx.llargs.borrow_mut()
-                   .insert(pat.id, Datum(arg_val, arg_ty, Lvalue));
+                   .insert(pat.id, Datum::new(arg_val, arg_ty, Lvalue));
                 bcx
             } else {
                 mk_binding_alloca(
@@ -2122,7 +2122,7 @@ fn mk_binding_alloca<'a,A>(bcx: &'a Block<'a>,
 
     // Now that memory is initialized and has cleanup scheduled,
     // create the datum and insert into the local variable map.
-    let datum = Datum(llval, var_ty, Lvalue);
+    let datum = Datum::new(llval, var_ty, Lvalue);
     let mut llmap = match binding_mode {
         BindLocal => bcx.fcx.lllocals.borrow_mut(),
         BindArgument => bcx.fcx.llargs.borrow_mut()
@@ -2183,7 +2183,7 @@ fn bind_irrefutable_pat<'a>(
                             ast::BindByValue(_) => {
                                 // By value binding: move the value that `val`
                                 // points at into the binding's stack slot.
-                                let d = Datum(val, ty, Lvalue);
+                                let d = Datum::new(val, ty, Lvalue);
                                 d.store_to(bcx, llval)
                             }
 
diff --git a/src/librustc/middle/trans/asm.rs b/src/librustc/middle/trans/asm.rs
index db19fa521ce..7ef6038d715 100644
--- a/src/librustc/middle/trans/asm.rs
+++ b/src/librustc/middle/trans/asm.rs
@@ -1,4 +1,4 @@
-// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -70,7 +70,7 @@ pub fn trans_inline_asm<'a>(bcx: &'a Block<'a>, ia: &ast::InlineAsm)
                                     .connect(",")
                                     .as_slice());
 
-    let mut clobbers = getClobbers();
+    let mut clobbers = get_clobbers();
     if !ia.clobbers.get().is_empty() && !clobbers.is_empty() {
         clobbers = format!("{},{}", ia.clobbers.get(), clobbers);
     } else {
@@ -135,12 +135,12 @@ pub fn trans_inline_asm<'a>(bcx: &'a Block<'a>, ia: &ast::InlineAsm)
 
 #[cfg(target_arch = "arm")]
 #[cfg(target_arch = "mips")]
-fn getClobbers() -> String {
+fn get_clobbers() -> String {
     "".to_string()
 }
 
 #[cfg(target_arch = "x86")]
 #[cfg(target_arch = "x86_64")]
-fn getClobbers() -> String {
+fn get_clobbers() -> String {
     "~{dirflag},~{fpsr},~{flags}".to_string()
 }
diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs
index 386ad66ebd6..464e8cff0fa 100644
--- a/src/librustc/middle/trans/base.rs
+++ b/src/librustc/middle/trans/base.rs
@@ -1210,7 +1210,7 @@ pub fn create_datums_for_fn_args(fcx: &FunctionContext,
         let llarg = unsafe {
             llvm::LLVMGetParam(fcx.llfn, fcx.arg_pos(i) as c_uint)
         };
-        datum::Datum(llarg, arg_ty, arg_kind(fcx, arg_ty))
+        datum::Datum::new(llarg, arg_ty, arg_kind(fcx, arg_ty))
     }).collect()
 }
 
diff --git a/src/librustc/middle/trans/build.rs b/src/librustc/middle/trans/build.rs
index 352ebc3834b..e04454d4a68 100644
--- a/src/librustc/middle/trans/build.rs
+++ b/src/librustc/middle/trans/build.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 #![allow(dead_code)] // FFI wrappers
+#![allow(non_snake_case_functions)]
 
 use lib::llvm::llvm;
 use lib::llvm::{CallConv, AtomicBinOp, AtomicOrdering, AsmDialect};
diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs
index 9e8d6926f12..9ca66f4c3b0 100644
--- a/src/librustc/middle/trans/closure.rs
+++ b/src/librustc/middle/trans/closure.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -460,5 +460,5 @@ pub fn make_closure_from_bare_fn<'a>(bcx: &'a Block<'a>,
     let wrapper = get_wrapper_for_bare_fn(bcx.ccx(), closure_ty, def, fn_ptr, true);
     fill_fn_pair(bcx, scratch.val, wrapper, C_null(Type::i8p(bcx.ccx())));
 
-    DatumBlock(bcx, scratch.to_expr_datum())
+    DatumBlock::new(bcx, scratch.to_expr_datum())
 }
diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs
index 7e63c1a18f7..0530e2a7463 100644
--- a/src/librustc/middle/trans/common.rs
+++ b/src/librustc/middle/trans/common.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![allow(non_camel_case_types)]
+#![allow(non_camel_case_types, non_snake_case_functions)]
 
 //! Code that is useful in various trans modules.
 
@@ -21,7 +21,6 @@ use middle::lang_items::LangItem;
 use middle::trans::build;
 use middle::trans::cleanup;
 use middle::trans::datum;
-use middle::trans::datum::{Datum, Lvalue};
 use middle::trans::debuginfo;
 use middle::trans::type_::Type;
 use middle::ty;
diff --git a/src/librustc/middle/trans/datum.rs b/src/librustc/middle/trans/datum.rs
index 1e0d3e16ab1..af9e614a17e 100644
--- a/src/librustc/middle/trans/datum.rs
+++ b/src/librustc/middle/trans/datum.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -71,8 +71,10 @@ pub struct Rvalue {
     pub mode: RvalueMode
 }
 
-pub fn Rvalue(m: RvalueMode) -> Rvalue {
-    Rvalue { mode: m }
+impl Rvalue {
+    pub fn new(m: RvalueMode) -> Rvalue {
+        Rvalue { mode: m }
+    }
 }
 
 // Make Datum linear for more type safety.
@@ -89,25 +91,15 @@ pub enum RvalueMode {
     ByValue,
 }
 
-pub fn Datum<K:KindOps>(val: ValueRef, ty: ty::t, kind: K) -> Datum<K> {
-    Datum { val: val, ty: ty, kind: kind }
-}
-
-pub fn DatumBlock<'a, K>(bcx: &'a Block<'a>,
-                         datum: Datum<K>)
-                         -> DatumBlock<'a, K> {
-    DatumBlock { bcx: bcx, datum: datum }
-}
-
 pub fn immediate_rvalue(val: ValueRef, ty: ty::t) -> Datum<Rvalue> {
-    return Datum(val, ty, Rvalue(ByValue));
+    return Datum::new(val, ty, Rvalue::new(ByValue));
 }
 
 pub fn immediate_rvalue_bcx<'a>(bcx: &'a Block<'a>,
                                 val: ValueRef,
                                 ty: ty::t)
                                 -> DatumBlock<'a, Rvalue> {
-    return DatumBlock(bcx, immediate_rvalue(val, ty))
+    return DatumBlock::new(bcx, immediate_rvalue(val, ty))
 }
 
 
@@ -136,7 +128,7 @@ pub fn lvalue_scratch_datum<'a, A>(bcx: &'a Block<'a>,
     let bcx = populate(arg, bcx, scratch);
     bcx.fcx.schedule_drop_mem(scope, scratch, ty);
 
-    DatumBlock(bcx, Datum(scratch, ty, Lvalue))
+    DatumBlock::new(bcx, Datum::new(scratch, ty, Lvalue))
 }
 
 pub fn rvalue_scratch_datum(bcx: &Block,
@@ -155,7 +147,7 @@ pub fn rvalue_scratch_datum(bcx: &Block,
 
     let llty = type_of::type_of(bcx.ccx(), ty);
     let scratch = alloca_maybe_zeroed(bcx, llty, name, false);
-    Datum(scratch, ty, Rvalue(ByRef))
+    Datum::new(scratch, ty, Rvalue::new(ByRef))
 }
 
 pub fn appropriate_rvalue_mode(ccx: &CrateContext, ty: ty::t) -> RvalueMode {
@@ -320,7 +312,7 @@ impl Datum<Rvalue> {
         match self.kind.mode {
             ByRef => {
                 add_rvalue_clean(ByRef, fcx, scope, self.val, self.ty);
-                DatumBlock(bcx, Datum(self.val, self.ty, Lvalue))
+                DatumBlock::new(bcx, Datum::new(self.val, self.ty, Lvalue))
             }
 
             ByValue => {
@@ -334,11 +326,11 @@ impl Datum<Rvalue> {
     pub fn to_ref_datum<'a>(self, bcx: &'a Block<'a>) -> DatumBlock<'a, Rvalue> {
         let mut bcx = bcx;
         match self.kind.mode {
-            ByRef => DatumBlock(bcx, self),
+            ByRef => DatumBlock::new(bcx, self),
             ByValue => {
                 let scratch = rvalue_scratch_datum(bcx, self.ty, "to_ref");
                 bcx = self.store_to(bcx, scratch.val);
-                DatumBlock(bcx, scratch)
+                DatumBlock::new(bcx, scratch)
             }
         }
     }
@@ -352,10 +344,10 @@ impl Datum<Rvalue> {
             }
             ByValue => {
                 match self.kind.mode {
-                    ByValue => DatumBlock(bcx, self),
+                    ByValue => DatumBlock::new(bcx, self),
                     ByRef => {
                         let llval = load(bcx, self.val, self.ty);
-                        DatumBlock(bcx, Datum(llval, self.ty, Rvalue(ByValue)))
+                        DatumBlock::new(bcx, Datum::new(llval, self.ty, Rvalue::new(ByValue)))
                     }
                 }
             }
@@ -378,8 +370,8 @@ impl Datum<Expr> {
                      -> R {
         let Datum { val, ty, kind } = self;
         match kind {
-            LvalueExpr => if_lvalue(Datum(val, ty, Lvalue)),
-            RvalueExpr(r) => if_rvalue(Datum(val, ty, r)),
+            LvalueExpr => if_lvalue(Datum::new(val, ty, Lvalue)),
+            RvalueExpr(r) => if_rvalue(Datum::new(val, ty, r)),
         }
     }
 
@@ -455,7 +447,7 @@ impl Datum<Expr> {
                                expr_id: ast::NodeId)
                                -> DatumBlock<'a, Lvalue> {
         self.match_kind(
-            |l| DatumBlock(bcx, l),
+            |l| DatumBlock::new(bcx, l),
             |r| {
                 let scope = cleanup::temporary_scope(bcx.tcx(), expr_id);
                 r.to_lvalue_datum_in_scope(bcx, name, scope)
@@ -478,16 +470,16 @@ impl Datum<Expr> {
                     ByRef => {
                         let scratch = rvalue_scratch_datum(bcx, l.ty, name);
                         bcx = l.store_to(bcx, scratch.val);
-                        DatumBlock(bcx, scratch)
+                        DatumBlock::new(bcx, scratch)
                     }
                     ByValue => {
                         let v = load(bcx, l.val, l.ty);
                         bcx = l.kind.post_store(bcx, l.val, l.ty);
-                        DatumBlock(bcx, Datum(v, l.ty, Rvalue(ByValue)))
+                        DatumBlock::new(bcx, Datum::new(v, l.ty, Rvalue::new(ByValue)))
                     }
                 }
             },
-            |r| DatumBlock(bcx, r))
+            |r| DatumBlock::new(bcx, r))
     }
 
 }
@@ -550,6 +542,10 @@ fn load<'a>(bcx: &'a Block<'a>, llptr: ValueRef, ty: ty::t) -> ValueRef {
  * Generic methods applicable to any sort of datum.
  */
 impl<K:KindOps> Datum<K> {
+    pub fn new(val: ValueRef, ty: ty::t, kind: K) -> Datum<K> {
+        Datum { val: val, ty: ty, kind: kind }
+    }
+
     pub fn to_expr_datum(self) -> Datum<Expr> {
         let Datum { val, ty, kind } = self;
         Datum { val: val, ty: ty, kind: kind.to_expr_kind() }
@@ -663,9 +659,15 @@ impl<K:KindOps> Datum<K> {
     }
 }
 
+impl <'a, K> DatumBlock<'a, K> {
+    pub fn new(bcx: &'a Block<'a>, datum: Datum<K>) -> DatumBlock<'a, K> {
+        DatumBlock { bcx: bcx, datum: datum }
+    }
+}
+
 impl<'a, K:KindOps> DatumBlock<'a, K> {
     pub fn to_expr_datumblock(self) -> DatumBlock<'a, Expr> {
-        DatumBlock(self.bcx, self.datum.to_expr_datum())
+        DatumBlock::new(self.bcx, self.datum.to_expr_datum())
     }
 }
 
diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs
index 17be522b4da..43d0d71154c 100644
--- a/src/librustc/middle/trans/debuginfo.rs
+++ b/src/librustc/middle/trans/debuginfo.rs
@@ -1,4 +1,4 @@
-// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -941,6 +941,7 @@ fn is_node_local_to_unit(cx: &CrateContext, node_id: ast::NodeId) -> bool
     !cx.reachable.contains(&node_id)
 }
 
+#[allow(non_snake_case_functions)]
 fn create_DIArray(builder: DIBuilderRef, arr: &[DIDescriptor]) -> DIArray {
     return unsafe {
         llvm::LLVMDIBuilderGetOrCreateArray(builder, arr.as_ptr(), arr.len() as u32)
@@ -2487,6 +2488,7 @@ fn debug_context<'a>(cx: &'a CrateContext) -> &'a CrateDebugContext {
 }
 
 #[inline]
+#[allow(non_snake_case_functions)]
 fn DIB(cx: &CrateContext) -> DIBuilderRef {
     cx.dbg_cx.get_ref().builder
 }
diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs
index b551b9b1fd7..1f997c36c42 100644
--- a/src/librustc/middle/trans/expr.rs
+++ b/src/librustc/middle/trans/expr.rs
@@ -152,7 +152,7 @@ pub fn trans<'a>(bcx: &'a Block<'a>,
     let datum = unpack_datum!(bcx, trans_unadjusted(bcx, expr));
     let datum = unpack_datum!(bcx, apply_adjustments(bcx, expr, datum));
     bcx = fcx.pop_and_trans_ast_cleanup_scope(bcx, expr.id);
-    return DatumBlock(bcx, datum);
+    return DatumBlock::new(bcx, datum);
 }
 
 fn apply_adjustments<'a>(bcx: &'a Block<'a>,
@@ -168,7 +168,7 @@ fn apply_adjustments<'a>(bcx: &'a Block<'a>,
     let mut datum = datum;
     let adjustment = match bcx.tcx().adjustments.borrow().find_copy(&expr.id) {
         None => {
-            return DatumBlock(bcx, datum);
+            return DatumBlock::new(bcx, datum);
         }
         Some(adj) => { adj }
     };
@@ -244,7 +244,7 @@ fn apply_adjustments<'a>(bcx: &'a Block<'a>,
         let scratch = rvalue_scratch_datum(bcx, slice_ty, "__adjust");
         Store(bcx, base, GEPi(bcx, scratch.val, [0u, abi::slice_elt_base]));
         Store(bcx, len, GEPi(bcx, scratch.val, [0u, abi::slice_elt_len]));
-        DatumBlock(bcx, scratch.to_expr_datum())
+        DatumBlock::new(bcx, scratch.to_expr_datum())
     }
 
     fn add_env<'a>(bcx: &'a Block<'a>,
@@ -282,7 +282,7 @@ fn apply_adjustments<'a>(bcx: &'a Block<'a>,
 
         let mut datum = source_datum.to_expr_datum();
         datum.ty = target_obj_ty;
-        DatumBlock(bcx, datum)
+        DatumBlock::new(bcx, datum)
     }
 }
 
@@ -357,7 +357,7 @@ fn trans_unadjusted<'a>(bcx: &'a Block<'a>,
                 let scratch = unpack_datum!(
                     bcx, scratch.to_appropriate_datum(bcx));
 
-                DatumBlock(bcx, scratch.to_expr_datum())
+                DatumBlock::new(bcx, scratch.to_expr_datum())
             }
         }
     };
@@ -365,7 +365,7 @@ fn trans_unadjusted<'a>(bcx: &'a Block<'a>,
     fn nil<'a>(bcx: &'a Block<'a>, ty: ty::t) -> DatumBlock<'a, Expr> {
         let llval = C_undef(type_of::type_of(bcx.ccx(), ty));
         let datum = immediate_rvalue(llval, ty);
-        DatumBlock(bcx, datum.to_expr_datum())
+        DatumBlock::new(bcx, datum.to_expr_datum())
     }
 }
 
@@ -394,7 +394,7 @@ fn trans_datum_unadjusted<'a>(bcx: &'a Block<'a>,
             let datum = unpack_datum!(
                 bcx, tvec::trans_uniq_vstore(bcx, expr, contents));
             bcx = fcx.pop_and_trans_ast_cleanup_scope(bcx, contents.id);
-            DatumBlock(bcx, datum)
+            DatumBlock::new(bcx, datum)
         }
         ast::ExprBox(_, contents) => {
             // Special case for `box T`. (The other case, for GC, is handled
@@ -494,7 +494,7 @@ fn trans_index<'a>(bcx: &'a Block<'a>,
         });
     let elt = InBoundsGEP(bcx, base, [ix_val]);
     let elt = PointerCast(bcx, elt, vt.llunit_ty.ptr_to());
-    DatumBlock(bcx, Datum(elt, vt.unit_ty, LvalueExpr))
+    DatumBlock::new(bcx, Datum::new(elt, vt.unit_ty, LvalueExpr))
 }
 
 fn trans_def<'a>(bcx: &'a Block<'a>,
@@ -559,10 +559,10 @@ fn trans_def<'a>(bcx: &'a Block<'a>,
 
             let did = get_did(bcx.ccx(), did);
             let val = get_val(bcx, did, const_ty);
-            DatumBlock(bcx, Datum(val, const_ty, LvalueExpr))
+            DatumBlock::new(bcx, Datum::new(val, const_ty, LvalueExpr))
         }
         _ => {
-            DatumBlock(bcx, trans_local_var(bcx, def).to_expr_datum())
+            DatumBlock::new(bcx, trans_local_var(bcx, def).to_expr_datum())
         }
     }
 }
@@ -845,7 +845,7 @@ fn trans_def_fn_unadjusted<'a>(bcx: &'a Block<'a>,
     };
 
     let fn_ty = expr_ty(bcx, ref_expr);
-    DatumBlock(bcx, Datum(llfn, fn_ty, RvalueExpr(Rvalue(ByValue))))
+    DatumBlock::new(bcx, Datum::new(llfn, fn_ty, RvalueExpr(Rvalue::new(ByValue))))
 }
 
 pub fn trans_local_var<'a>(bcx: &'a Block<'a>,
@@ -863,7 +863,7 @@ pub fn trans_local_var<'a>(bcx: &'a Block<'a>,
             // Can't move upvars, so this is never a ZeroMemLastUse.
             let local_ty = node_id_type(bcx, nid);
             match bcx.fcx.llupvars.borrow().find(&nid) {
-                Some(&val) => Datum(val, local_ty, Lvalue),
+                Some(&val) => Datum::new(val, local_ty, Lvalue),
                 None => {
                     bcx.sess().bug(format!(
                         "trans_local_var: no llval for upvar {:?} found",
@@ -1664,7 +1664,7 @@ fn auto_ref<'a>(bcx: &'a Block<'a>,
     // Construct the resulting datum, using what was the "by ref"
     // ValueRef of type `referent_ty` to be the "by value" ValueRef
     // of type `&referent_ty`.
-    DatumBlock(bcx, Datum(llref, ptr_ty, RvalueExpr(Rvalue(ByValue))))
+    DatumBlock::new(bcx, Datum::new(llref, ptr_ty, RvalueExpr(Rvalue::new(ByValue))))
 }
 
 fn deref_multiple<'a>(bcx: &'a Block<'a>,
@@ -1717,7 +1717,7 @@ fn deref_once<'a>(bcx: &'a Block<'a>,
             let val = unpack_result!(bcx, trans_overloaded_op(bcx, expr, method_call,
                                                               datum, None, None));
             let ref_ty = ty::ty_fn_ret(monomorphize_type(bcx, method_ty));
-            Datum(val, ref_ty, RvalueExpr(Rvalue(ByValue)))
+            Datum::new(val, ref_ty, RvalueExpr(Rvalue::new(ByValue)))
         }
         None => {
             // Not overloaded. We already have a pointer we know how to deref.
@@ -1740,7 +1740,7 @@ fn deref_once<'a>(bcx: &'a Block<'a>,
             let llptrref = datum.to_llref();
             let llptr = Load(bcx, llptrref);
             let llbody = GEPi(bcx, llptr, [0u, abi::box_field_body]);
-            DatumBlock(bcx, Datum(llbody, content_ty, LvalueExpr))
+            DatumBlock::new(bcx, Datum::new(llbody, content_ty, LvalueExpr))
         }
 
         ty::ty_ptr(ty::mt { ty: content_ty, .. }) |
@@ -1758,7 +1758,7 @@ fn deref_once<'a>(bcx: &'a Block<'a>,
                     // rvalue for non-owning pointers like &T or *T, in which
                     // case cleanup *is* scheduled elsewhere, by the true
                     // owner (or, in the case of *T, by the user).
-                    DatumBlock(bcx, Datum(ptr, content_ty, LvalueExpr))
+                    DatumBlock::new(bcx, Datum::new(ptr, content_ty, LvalueExpr))
                 }
             }
         }
@@ -1818,10 +1818,10 @@ fn deref_once<'a>(bcx: &'a Block<'a>,
                 (Load(bcx, datum.val), LvalueExpr)
             }
             RvalueExpr(Rvalue { mode: ByRef }) => {
-                (Load(bcx, datum.val), RvalueExpr(Rvalue(ByRef)))
+                (Load(bcx, datum.val), RvalueExpr(Rvalue::new(ByRef)))
             }
             RvalueExpr(Rvalue { mode: ByValue }) => {
-                (datum.val, RvalueExpr(Rvalue(ByRef)))
+                (datum.val, RvalueExpr(Rvalue::new(ByRef)))
             }
         };
 
diff --git a/src/librustc/middle/trans/intrinsic.rs b/src/librustc/middle/trans/intrinsic.rs
index aeb7a4641c0..eea8ce44a9d 100644
--- a/src/librustc/middle/trans/intrinsic.rs
+++ b/src/librustc/middle/trans/intrinsic.rs
@@ -1,4 +1,4 @@
-// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -309,7 +309,7 @@ pub fn trans_intrinsic(ccx: &CrateContext,
             let mode = appropriate_rvalue_mode(ccx, tp_ty);
             let src = Datum {val: get_param(decl, first_real_arg + 1u),
                              ty: tp_ty,
-                             kind: Rvalue(mode)};
+                             kind: Rvalue::new(mode)};
             bcx = src.store_to(bcx, get_param(decl, first_real_arg));
             RetVoid(bcx);
         }
diff --git a/src/librustc/middle/trans/tvec.rs b/src/librustc/middle/trans/tvec.rs
index 446d2967139..a2d460e9162 100644
--- a/src/librustc/middle/trans/tvec.rs
+++ b/src/librustc/middle/trans/tvec.rs
@@ -257,7 +257,7 @@ pub fn trans_uniq_vstore<'a>(bcx: &'a Block<'a>,
                         alloc_fn,
                         [ llptrval, llsizeval ],
                         Some(expr::SaveIn(lldestval.val))).bcx;
-                    return DatumBlock(bcx, lldestval).to_expr_datumblock();
+                    return DatumBlock::new(bcx, lldestval).to_expr_datumblock();
                 }
                 _ => {}
             }
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index 07033d2bd4a..4dc66427d7f 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -840,11 +840,11 @@ pub enum BuiltinBound {
     BoundShare,
 }
 
-pub fn EmptyBuiltinBounds() -> BuiltinBounds {
+pub fn empty_builtin_bounds() -> BuiltinBounds {
     EnumSet::empty()
 }
 
-pub fn AllBuiltinBounds() -> BuiltinBounds {
+pub fn all_builtin_bounds() -> BuiltinBounds {
     let mut set = EnumSet::empty();
     set.add(BoundStatic);
     set.add(BoundSend);
@@ -2833,7 +2833,7 @@ pub fn adjust_ty(cx: &ctxt,
                                 ty::ClosureTy {fn_style: b.fn_style,
                                                onceness: ast::Many,
                                                store: store,
-                                               bounds: ty::AllBuiltinBounds(),
+                                               bounds: ty::all_builtin_bounds(),
                                                sig: b.sig.clone()})
                         }
                         ref b => {
@@ -4303,7 +4303,7 @@ pub fn visitor_object_ty(tcx: &ctxt,
                  trait_ref.def_id,
                  trait_ref.substs.clone(),
                  RegionTraitStore(region, ast::MutMutable),
-                 EmptyBuiltinBounds())))
+                 empty_builtin_bounds())))
 }
 
 pub fn item_variances(tcx: &ctxt, item_id: ast::DefId) -> Rc<ItemVariances> {
diff --git a/src/librustc/middle/typeck/astconv.rs b/src/librustc/middle/typeck/astconv.rs
index 9cc5d2d73ca..5323d4468c9 100644
--- a/src/librustc/middle/typeck/astconv.rs
+++ b/src/librustc/middle/typeck/astconv.rs
@@ -907,7 +907,7 @@ fn conv_builtin_bounds(tcx: &ty::ctxt, ast_bounds: &Option<OwnedSlice<ast::TyPar
 
     match (ast_bounds, store) {
         (&Some(ref bound_vec), _) => {
-            let mut builtin_bounds = ty::EmptyBuiltinBounds();
+            let mut builtin_bounds = ty::empty_builtin_bounds();
             for ast_bound in bound_vec.iter() {
                 match *ast_bound {
                     ast::TraitTyParamBound(ref b) => {
@@ -942,10 +942,10 @@ fn conv_builtin_bounds(tcx: &ty::ctxt, ast_bounds: &Option<OwnedSlice<ast::TyPar
         },
         // &'static Trait is sugar for &'static Trait:'static.
         (&None, ty::RegionTraitStore(ty::ReStatic, _)) => {
-            let mut set = ty::EmptyBuiltinBounds(); set.add(ty::BoundStatic); set
+            let mut set = ty::empty_builtin_bounds(); set.add(ty::BoundStatic); set
         }
         // No bounds are automatically applied for &'r Trait or ~Trait
         (&None, ty::RegionTraitStore(..)) |
-        (&None, ty::UniqTraitStore) => ty::EmptyBuiltinBounds(),
+        (&None, ty::UniqTraitStore) => ty::empty_builtin_bounds(),
     }
 }
diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs
index ec2fa0dab55..735bec4f4db 100644
--- a/src/librustc/middle/typeck/check/method.rs
+++ b/src/librustc/middle/typeck/check/method.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -274,12 +274,12 @@ fn construct_transformed_self_ty_for_object(
                     let r = r.subst(tcx, &substs); // handle Early-Bound lifetime
                     ty::mk_trait(tcx, trait_def_id, substs,
                                  RegionTraitStore(r, mt.mutbl),
-                                 ty::EmptyBuiltinBounds())
+                                 ty::empty_builtin_bounds())
                 }
                 ty::ty_uniq(_) => { // must be SelfUniq
                     ty::mk_trait(tcx, trait_def_id, substs,
                                  UniqTraitStore,
-                                 ty::EmptyBuiltinBounds())
+                                 ty::empty_builtin_bounds())
                 }
                 _ => {
                     tcx.sess.span_bug(span,
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index f3881abead2..1987f4b0751 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -2335,7 +2335,7 @@ fn check_expr_with_unifier(fcx: &FnCtxt,
                 }
                 _ => {
                     // Not an error! Means we're inferring the closure type
-                    let mut bounds = ty::EmptyBuiltinBounds();
+                    let mut bounds = ty::empty_builtin_bounds();
                     let onceness = match expr.node {
                         ast::ExprProc(..) => {
                             bounds.add(ty::BoundSend);
diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs
index 5e67cb54ccc..0d7bbdee3ce 100644
--- a/src/librustc/middle/typeck/check/vtable.rs
+++ b/src/librustc/middle/typeck/check/vtable.rs
@@ -472,7 +472,7 @@ fn fixup_substs(vcx: &VtableContext,
     let t = ty::mk_trait(tcx,
                          id, substs,
                          ty::RegionTraitStore(ty::ReStatic, ast::MutImmutable),
-                         ty::EmptyBuiltinBounds());
+                         ty::empty_builtin_bounds());
     fixup_ty(vcx, span, t, is_early).map(|t_f| {
         match ty::get(t_f).sty {
           ty::ty_trait(ref inner) => inner.substs.clone(),
@@ -574,7 +574,7 @@ pub fn early_resolve_expr(ex: &ast::Expr, fcx: &FnCtxt, is_early: bool) {
                       });
 
                       let param_bounds = ty::ParamBounds {
-                          builtin_bounds: ty::EmptyBuiltinBounds(),
+                          builtin_bounds: ty::empty_builtin_bounds(),
                           trait_bounds: vec!(target_trait_ref)
                       };
                       let vtables =
@@ -766,7 +766,7 @@ pub fn resolve_impl(tcx: &ty::ctxt,
     // purpose of this is to check for supertrait impls,
     // but that falls out of doing this.
     let param_bounds = ty::ParamBounds {
-        builtin_bounds: ty::EmptyBuiltinBounds(),
+        builtin_bounds: ty::empty_builtin_bounds(),
         trait_bounds: vec!(Rc::new(impl_trait_ref))
     };
     let t = ty::node_id_to_type(tcx, impl_item.id);
diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs
index 447f8dfa278..4d07d227dc7 100644
--- a/src/librustc/middle/typeck/collect.rs
+++ b/src/librustc/middle/typeck/collect.rs
@@ -347,7 +347,7 @@ pub fn ensure_trait_methods(ccx: &CrateCtxt, trait_id: ast::NodeId) {
             ident: special_idents::self_,
             def_id: dummy_defid,
             bounds: Rc::new(ty::ParamBounds {
-                builtin_bounds: ty::EmptyBuiltinBounds(),
+                builtin_bounds: ty::empty_builtin_bounds(),
                 trait_bounds: vec!(self_trait_ref)
             }),
             default: None
@@ -418,7 +418,7 @@ pub fn ensure_supertraits(ccx: &CrateCtxt,
 
     let self_ty = ty::mk_self(ccx.tcx, local_def(id));
     let mut ty_trait_refs: Vec<Rc<ty::TraitRef>> = Vec::new();
-    let mut bounds = ty::EmptyBuiltinBounds();
+    let mut bounds = ty::empty_builtin_bounds();
     for ast_trait_ref in ast_trait_refs.iter() {
         let trait_def_id = ty::trait_ref_to_def_id(ccx.tcx, ast_trait_ref);
         // FIXME(#8559): Need to instantiate the trait_ref whether or not it's a
@@ -1094,7 +1094,7 @@ fn ty_generics(ccx: &CrateCtxt,
          */
 
         let mut param_bounds = ty::ParamBounds {
-            builtin_bounds: ty::EmptyBuiltinBounds(),
+            builtin_bounds: ty::empty_builtin_bounds(),
             trait_bounds: Vec::new()
         };
         for ast_bound in ast_bounds.iter() {
diff --git a/src/librustc/middle/typeck/infer/mod.rs b/src/librustc/middle/typeck/infer/mod.rs
index e073d4fcbd7..d560b1c9a99 100644
--- a/src/librustc/middle/typeck/infer/mod.rs
+++ b/src/librustc/middle/typeck/infer/mod.rs
@@ -22,7 +22,6 @@ pub use middle::typeck::infer::resolve::{resolve_nested_tvar};
 pub use middle::typeck::infer::resolve::{resolve_rvar};
 
 use collections::HashMap;
-use collections::SmallIntMap;
 use middle::ty::{TyVid, IntVid, FloatVid, RegionVid, Vid};
 use middle::ty;
 use middle::ty_fold;
@@ -258,27 +257,20 @@ pub fn fixup_err_to_str(f: fixup_err) -> String {
     }
 }
 
-fn new_ValsAndBindings<V:Clone,T:Clone>() -> ValsAndBindings<V, T> {
-    ValsAndBindings {
-        vals: SmallIntMap::new(),
-        bindings: Vec::new()
-    }
-}
-
 pub fn new_infer_ctxt<'a>(tcx: &'a ty::ctxt) -> InferCtxt<'a> {
     InferCtxt {
         tcx: tcx,
 
-        ty_var_bindings: RefCell::new(new_ValsAndBindings()),
+        ty_var_bindings: RefCell::new(ValsAndBindings::new()),
         ty_var_counter: Cell::new(0),
 
-        int_var_bindings: RefCell::new(new_ValsAndBindings()),
+        int_var_bindings: RefCell::new(ValsAndBindings::new()),
         int_var_counter: Cell::new(0),
 
-        float_var_bindings: RefCell::new(new_ValsAndBindings()),
+        float_var_bindings: RefCell::new(ValsAndBindings::new()),
         float_var_counter: Cell::new(0),
 
-        region_vars: RegionVarBindings(tcx),
+        region_vars: RegionVarBindings::new(tcx),
     }
 }
 
@@ -679,7 +671,7 @@ impl<'a> InferCtxt<'a> {
                                   trait_ref.def_id,
                                   trait_ref.substs.clone(),
                                   ty::UniqTraitStore,
-                                  ty::EmptyBuiltinBounds());
+                                  ty::empty_builtin_bounds());
         let dummy1 = self.resolve_type_vars_if_possible(dummy0);
         match ty::get(dummy1).sty {
             ty::ty_trait(box ty::TyTrait { ref def_id, ref substs, .. }) => {
diff --git a/src/librustc/middle/typeck/infer/region_inference/mod.rs b/src/librustc/middle/typeck/infer/region_inference/mod.rs
index 0efbe733367..c964530a5f9 100644
--- a/src/librustc/middle/typeck/infer/region_inference/mod.rs
+++ b/src/librustc/middle/typeck/infer/region_inference/mod.rs
@@ -143,21 +143,21 @@ pub struct RegionVarBindings<'a> {
     values: RefCell<Option<Vec<VarValue> >>,
 }
 
-pub fn RegionVarBindings<'a>(tcx: &'a ty::ctxt) -> RegionVarBindings<'a> {
-    RegionVarBindings {
-        tcx: tcx,
-        var_origins: RefCell::new(Vec::new()),
-        values: RefCell::new(None),
-        constraints: RefCell::new(HashMap::new()),
-        lubs: RefCell::new(HashMap::new()),
-        glbs: RefCell::new(HashMap::new()),
-        skolemization_count: Cell::new(0),
-        bound_count: Cell::new(0),
-        undo_log: RefCell::new(Vec::new())
+impl<'a> RegionVarBindings<'a> {
+    pub fn new(tcx: &'a ty::ctxt) -> RegionVarBindings<'a> {
+        RegionVarBindings {
+            tcx: tcx,
+            var_origins: RefCell::new(Vec::new()),
+            values: RefCell::new(None),
+            constraints: RefCell::new(HashMap::new()),
+            lubs: RefCell::new(HashMap::new()),
+            glbs: RefCell::new(HashMap::new()),
+            skolemization_count: Cell::new(0),
+            bound_count: Cell::new(0),
+            undo_log: RefCell::new(Vec::new())
+        }
     }
-}
 
-impl<'a> RegionVarBindings<'a> {
     pub fn in_snapshot(&self) -> bool {
         self.undo_log.borrow().len() > 0
     }
diff --git a/src/librustc/middle/typeck/infer/unify.rs b/src/librustc/middle/typeck/infer/unify.rs
index f36b9862850..867e52056a7 100644
--- a/src/librustc/middle/typeck/infer/unify.rs
+++ b/src/librustc/middle/typeck/infer/unify.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -30,6 +30,15 @@ pub struct ValsAndBindings<V, T> {
     pub bindings: Vec<(V, VarValue<V, T>)> ,
 }
 
+impl<V:Clone, T:Clone> ValsAndBindings<V, T> {
+    pub fn new() -> ValsAndBindings<V, T> {
+        ValsAndBindings {
+            vals: SmallIntMap::new(),
+            bindings: Vec::new()
+        }
+    }
+}
+
 pub struct Node<V, T> {
     pub root: V,
     pub possible_types: T,