librustc: De-export back, lib, and util. rs=deexporting

This commit is contained in:
Patrick Walton 2013-01-29 15:48:50 -08:00
parent 3105bcfdc1
commit 2ea2628ca9
16 changed files with 758 additions and 725 deletions

View file

@ -11,72 +11,72 @@
const rc_base_field_refcnt: uint = 0u; pub const rc_base_field_refcnt: uint = 0u;
const task_field_refcnt: uint = 0u; pub const task_field_refcnt: uint = 0u;
const task_field_stk: uint = 2u; pub const task_field_stk: uint = 2u;
const task_field_runtime_sp: uint = 3u; pub const task_field_runtime_sp: uint = 3u;
const task_field_rust_sp: uint = 4u; pub const task_field_rust_sp: uint = 4u;
const task_field_gc_alloc_chain: uint = 5u; pub const task_field_gc_alloc_chain: uint = 5u;
const task_field_dom: uint = 6u; pub const task_field_dom: uint = 6u;
const n_visible_task_fields: uint = 7u; pub const n_visible_task_fields: uint = 7u;
const dom_field_interrupt_flag: uint = 1u; pub const dom_field_interrupt_flag: uint = 1u;
const frame_glue_fns_field_mark: uint = 0u; pub const frame_glue_fns_field_mark: uint = 0u;
const frame_glue_fns_field_drop: uint = 1u; pub const frame_glue_fns_field_drop: uint = 1u;
const frame_glue_fns_field_reloc: uint = 2u; pub const frame_glue_fns_field_reloc: uint = 2u;
const box_field_refcnt: uint = 0u; pub const box_field_refcnt: uint = 0u;
const box_field_tydesc: uint = 1u; pub const box_field_tydesc: uint = 1u;
const box_field_prev: uint = 2u; pub const box_field_prev: uint = 2u;
const box_field_next: uint = 3u; pub const box_field_next: uint = 3u;
const box_field_body: uint = 4u; pub const box_field_body: uint = 4u;
const general_code_alignment: uint = 16u; pub const general_code_alignment: uint = 16u;
const tydesc_field_size: uint = 0u; pub const tydesc_field_size: uint = 0u;
const tydesc_field_align: uint = 1u; pub const tydesc_field_align: uint = 1u;
const tydesc_field_take_glue: uint = 2u; pub const tydesc_field_take_glue: uint = 2u;
const tydesc_field_drop_glue: uint = 3u; pub const tydesc_field_drop_glue: uint = 3u;
const tydesc_field_free_glue: uint = 4u; pub const tydesc_field_free_glue: uint = 4u;
const tydesc_field_visit_glue: uint = 5u; pub const tydesc_field_visit_glue: uint = 5u;
const tydesc_field_shape: uint = 6u; pub const tydesc_field_shape: uint = 6u;
const tydesc_field_shape_tables: uint = 7u; pub const tydesc_field_shape_tables: uint = 7u;
const n_tydesc_fields: uint = 8u; pub const n_tydesc_fields: uint = 8u;
// The two halves of a closure: code and environment. // The two halves of a closure: code and environment.
const fn_field_code: uint = 0u; pub const fn_field_code: uint = 0u;
const fn_field_box: uint = 1u; pub const fn_field_box: uint = 1u;
const vec_elt_fill: uint = 0u; pub const vec_elt_fill: uint = 0u;
const vec_elt_alloc: uint = 1u; pub const vec_elt_alloc: uint = 1u;
const vec_elt_elems: uint = 2u; pub const vec_elt_elems: uint = 2u;
const slice_elt_base: uint = 0u; pub const slice_elt_base: uint = 0u;
const slice_elt_len: uint = 1u; pub const slice_elt_len: uint = 1u;
const worst_case_glue_call_args: uint = 7u; pub const worst_case_glue_call_args: uint = 7u;
const abi_version: uint = 1u; pub const abi_version: uint = 1u;
fn memcpy_glue_name() -> ~str { return ~"rust_memcpy_glue"; } pub fn memcpy_glue_name() -> ~str { return ~"rust_memcpy_glue"; }
fn bzero_glue_name() -> ~str { return ~"rust_bzero_glue"; } pub fn bzero_glue_name() -> ~str { return ~"rust_bzero_glue"; }
fn yield_glue_name() -> ~str { return ~"rust_yield_glue"; } pub fn yield_glue_name() -> ~str { return ~"rust_yield_glue"; }
fn no_op_type_glue_name() -> ~str { return ~"rust_no_op_type_glue"; } pub fn no_op_type_glue_name() -> ~str { return ~"rust_no_op_type_glue"; }
// //
// Local Variables: // Local Variables:
// mode: rust // mode: rust

View file

@ -13,7 +13,7 @@ use driver::session;
use session::sess_os_to_meta_os; use session::sess_os_to_meta_os;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_os: session::os) -> target_strs::t {
return { return {
module_asm: ~"", module_asm: ~"",

View file

@ -43,7 +43,8 @@ use syntax::ast_map::{path, path_mod, path_name};
use syntax::attr; use syntax::attr;
use syntax::print::pprust; use syntax::print::pprust;
enum output_type { #[deriving_eq]
pub enum output_type {
output_type_none, output_type_none,
output_type_bitcode, output_type_bitcode,
output_type_assembly, output_type_assembly,
@ -52,13 +53,6 @@ enum output_type {
output_type_exe, output_type_exe,
} }
impl output_type : cmp::Eq {
pure fn eq(&self, other: &output_type) -> bool {
((*self) as uint) == ((*other) as uint)
}
pure fn ne(&self, other: &output_type) -> bool { !(*self).eq(other) }
}
pub fn llvm_err(sess: Session, +msg: ~str) -> ! { pub fn llvm_err(sess: Session, +msg: ~str) -> ! {
unsafe { unsafe {
let cstr = llvm::LLVMRustGetLastError(); let cstr = llvm::LLVMRustGetLastError();
@ -170,15 +164,15 @@ pub mod jit {
} }
} }
mod write { pub mod write {
use back::link::jit; use back::link::jit;
use back::link::{ModuleRef, WriteOutputFile, output_type}; use back::link::{WriteOutputFile, output_type};
use back::link::{output_type_assembly, output_type_bitcode}; use back::link::{output_type_assembly, output_type_bitcode};
use back::link::{output_type_exe, output_type_llvm_assembly}; use back::link::{output_type_exe, output_type_llvm_assembly};
use back::link::{output_type_object}; use back::link::{output_type_object};
use driver::session; use driver::session;
use lib::llvm::llvm; use lib::llvm::llvm;
use lib::llvm::{False, True, mk_pass_manager, mk_target_data}; use lib::llvm::{False, True, ModuleRef, mk_pass_manager, mk_target_data};
use lib; use lib;
use session::Session; use session::Session;
@ -456,7 +450,7 @@ mod write {
* *
*/ */
fn build_link_meta(sess: Session, c: &ast::crate, output: &Path, pub fn build_link_meta(sess: Session, c: &ast::crate, output: &Path,
symbol_hasher: &hash::State) -> link_meta { symbol_hasher: &hash::State) -> link_meta {
type provided_metas = type provided_metas =
@ -575,7 +569,7 @@ fn build_link_meta(sess: Session, c: &ast::crate, output: &Path,
return {name: name, vers: vers, extras_hash: extras_hash}; return {name: name, vers: vers, extras_hash: extras_hash};
} }
fn truncated_hash_result(symbol_hasher: &hash::State) -> ~str { pub fn truncated_hash_result(symbol_hasher: &hash::State) -> ~str {
unsafe { unsafe {
symbol_hasher.result_str() symbol_hasher.result_str()
} }
@ -583,7 +577,7 @@ fn truncated_hash_result(symbol_hasher: &hash::State) -> ~str {
// This calculates STH for a symbol, as defined above // This calculates STH for a symbol, as defined above
fn symbol_hash(tcx: ty::ctxt, symbol_hasher: &hash::State, t: ty::t, pub fn symbol_hash(tcx: ty::ctxt, symbol_hasher: &hash::State, t: ty::t,
link_meta: link_meta) -> @str { link_meta: link_meta) -> @str {
// NB: do *not* use abbrevs here as we want the symbol names // NB: do *not* use abbrevs here as we want the symbol names
// to be independent of one another in the crate. // to be independent of one another in the crate.
@ -601,7 +595,7 @@ fn symbol_hash(tcx: ty::ctxt, symbol_hasher: &hash::State, t: ty::t,
hash.to_managed() hash.to_managed()
} }
fn get_symbol_hash(ccx: @crate_ctxt, t: ty::t) -> @str { pub fn get_symbol_hash(ccx: @crate_ctxt, t: ty::t) -> @str {
match ccx.type_hashcodes.find(t) { match ccx.type_hashcodes.find(t) {
Some(h) => h, Some(h) => h,
None => { None => {
@ -615,7 +609,7 @@ fn get_symbol_hash(ccx: @crate_ctxt, t: ty::t) -> @str {
// Name sanitation. LLVM will happily accept identifiers with weird names, but // Name sanitation. LLVM will happily accept identifiers with weird names, but
// gas doesn't! // gas doesn't!
fn sanitize(s: ~str) -> ~str { pub fn sanitize(s: ~str) -> ~str {
let mut result = ~""; let mut result = ~"";
for str::chars_each(s) |c| { for str::chars_each(s) |c| {
match c { match c {
@ -648,7 +642,7 @@ fn sanitize(s: ~str) -> ~str {
return result; return result;
} }
fn mangle(sess: Session, ss: path) -> ~str { pub fn mangle(sess: Session, ss: path) -> ~str {
// Follow C++ namespace-mangling style // Follow C++ namespace-mangling style
let mut n = ~"_ZN"; // Begin name-sequence. let mut n = ~"_ZN"; // Begin name-sequence.
@ -663,26 +657,26 @@ fn mangle(sess: Session, ss: path) -> ~str {
n n
} }
fn exported_name(sess: Session, pub fn exported_name(sess: Session,
+path: path, +path: path,
hash: &str, hash: &str,
vers: &str) -> ~str { vers: &str) -> ~str {
return mangle(sess, return mangle(sess,
vec::append_one( vec::append_one(
vec::append_one(path, path_name(sess.ident_of(hash.to_owned()))), vec::append_one(path, path_name(sess.ident_of(hash.to_owned()))),
path_name(sess.ident_of(vers.to_owned())))); path_name(sess.ident_of(vers.to_owned()))));
} }
fn mangle_exported_name(ccx: @crate_ctxt, +path: path, t: ty::t) -> ~str { pub fn mangle_exported_name(ccx: @crate_ctxt, +path: path, t: ty::t) -> ~str {
let hash = get_symbol_hash(ccx, t); let hash = get_symbol_hash(ccx, t);
return exported_name(ccx.sess, path, return exported_name(ccx.sess, path,
hash, hash,
ccx.link_meta.vers); ccx.link_meta.vers);
} }
fn mangle_internal_name_by_type_only(ccx: @crate_ctxt, pub fn mangle_internal_name_by_type_only(ccx: @crate_ctxt,
t: ty::t, t: ty::t,
name: &str) -> ~str { name: &str) -> ~str {
let s = ppaux::ty_to_short_str(ccx.tcx, t); let s = ppaux::ty_to_short_str(ccx.tcx, t);
let hash = get_symbol_hash(ccx, t); let hash = get_symbol_hash(ccx, t);
return mangle(ccx.sess, return mangle(ccx.sess,
@ -691,23 +685,23 @@ fn mangle_internal_name_by_type_only(ccx: @crate_ctxt,
path_name(ccx.sess.ident_of(hash.to_owned()))]); path_name(ccx.sess.ident_of(hash.to_owned()))]);
} }
fn mangle_internal_name_by_path_and_seq(ccx: @crate_ctxt, pub fn mangle_internal_name_by_path_and_seq(ccx: @crate_ctxt,
+path: path, +path: path,
+flav: ~str) -> ~str { +flav: ~str) -> ~str {
return mangle(ccx.sess, return mangle(ccx.sess,
vec::append_one(path, path_name((ccx.names)(flav)))); vec::append_one(path, path_name((ccx.names)(flav))));
} }
fn mangle_internal_name_by_path(ccx: @crate_ctxt, +path: path) -> ~str { pub fn mangle_internal_name_by_path(ccx: @crate_ctxt, +path: path) -> ~str {
return mangle(ccx.sess, path); return mangle(ccx.sess, path);
} }
fn mangle_internal_name_by_seq(ccx: @crate_ctxt, +flav: ~str) -> ~str { pub fn mangle_internal_name_by_seq(ccx: @crate_ctxt, +flav: ~str) -> ~str {
return fmt!("%s_%u", flav, (ccx.names)(flav).repr); return fmt!("%s_%u", flav, (ccx.names)(flav).repr);
} }
fn output_dll_filename(os: session::os, lm: link_meta) -> ~str { pub fn output_dll_filename(os: session::os, lm: link_meta) -> ~str {
let libname = fmt!("%s-%s-%s", lm.name, lm.extras_hash, lm.vers); let libname = fmt!("%s-%s-%s", lm.name, lm.extras_hash, lm.vers);
let (dll_prefix, dll_suffix) = match os { let (dll_prefix, dll_suffix) = match os {
session::os_win32 => (win32::DLL_PREFIX, win32::DLL_SUFFIX), session::os_win32 => (win32::DLL_PREFIX, win32::DLL_SUFFIX),
@ -722,10 +716,10 @@ fn output_dll_filename(os: session::os, lm: link_meta) -> ~str {
// If the user wants an exe generated we need to invoke // If the user wants an exe generated we need to invoke
// cc to link the object file with some libs // cc to link the object file with some libs
fn link_binary(sess: Session, pub fn link_binary(sess: Session,
obj_filename: &Path, obj_filename: &Path,
out_filename: &Path, out_filename: &Path,
lm: link_meta) { lm: link_meta) {
// Converts a library file-stem into a cc -l argument // Converts a library file-stem into a cc -l argument
fn unlib(config: @session::config, +stem: ~str) -> ~str { fn unlib(config: @session::config, +stem: ~str) -> ~str {
if stem.starts_with("lib") && if stem.starts_with("lib") &&

View file

@ -21,14 +21,6 @@ use core::vec;
use std::map::HashMap; use std::map::HashMap;
use std::map; use std::map;
export get_absolute_rpath;
export get_install_prefix_rpath;
export get_relative_to;
export get_rpath_flags;
export get_rpath_relative_to_output;
export minimize_rpaths;
export rpaths_to_flags;
pure fn not_win32(os: session::os) -> bool { pure fn not_win32(os: session::os) -> bool {
match os { match os {
session::os_win32 => false, session::os_win32 => false,
@ -36,7 +28,8 @@ pure fn not_win32(os: session::os) -> bool {
} }
} }
fn get_rpath_flags(sess: session::Session, out_filename: &Path) -> ~[~str] { pub fn get_rpath_flags(sess: session::Session, out_filename: &Path)
-> ~[~str] {
let os = sess.targ_cfg.os; let os = sess.targ_cfg.os;
// No rpath on windows // No rpath on windows
@ -63,7 +56,7 @@ fn get_sysroot_absolute_rt_lib(sess: session::Session) -> Path {
sess.filesearch.sysroot().push_rel(&r).push(os::dll_filename("rustrt")) sess.filesearch.sysroot().push_rel(&r).push(os::dll_filename("rustrt"))
} }
fn rpaths_to_flags(rpaths: &[Path]) -> ~[~str] { pub fn rpaths_to_flags(rpaths: &[Path]) -> ~[~str] {
vec::map(rpaths, |rpath| fmt!("-Wl,-rpath,%s",rpath.to_str())) vec::map(rpaths, |rpath| fmt!("-Wl,-rpath,%s",rpath.to_str()))
} }
@ -120,10 +113,10 @@ fn get_rpaths_relative_to_output(os: session::os,
}) })
} }
fn get_rpath_relative_to_output(os: session::os, pub fn get_rpath_relative_to_output(os: session::os,
output: &Path, output: &Path,
lib: &Path) lib: &Path)
-> Path { -> Path {
use core::os; use core::os;
assert not_win32(os); assert not_win32(os);
@ -141,7 +134,7 @@ fn get_rpath_relative_to_output(os: session::os,
} }
// Find the relative path from one file to another // Find the relative path from one file to another
fn get_relative_to(abs1: &Path, abs2: &Path) -> Path { pub fn get_relative_to(abs1: &Path, abs2: &Path) -> Path {
assert abs1.is_absolute; assert abs1.is_absolute;
assert abs2.is_absolute; assert abs2.is_absolute;
let abs1 = abs1.normalize(); let abs1 = abs1.normalize();
@ -178,11 +171,11 @@ fn get_absolute_rpaths(libs: &[Path]) -> ~[Path] {
vec::map(libs, |a| get_absolute_rpath(a) ) vec::map(libs, |a| get_absolute_rpath(a) )
} }
fn get_absolute_rpath(lib: &Path) -> Path { pub fn get_absolute_rpath(lib: &Path) -> Path {
os::make_absolute(lib).dir_path() os::make_absolute(lib).dir_path()
} }
fn get_install_prefix_rpath(target_triple: &str) -> Path { pub fn get_install_prefix_rpath(target_triple: &str) -> Path {
let install_prefix = env!("CFG_PREFIX"); let install_prefix = env!("CFG_PREFIX");
if install_prefix == ~"" { if install_prefix == ~"" {
@ -193,7 +186,7 @@ fn get_install_prefix_rpath(target_triple: &str) -> Path {
os::make_absolute(&Path(install_prefix).push_rel(&tlib)) os::make_absolute(&Path(install_prefix).push_rel(&tlib))
} }
fn minimize_rpaths(rpaths: &[Path]) -> ~[Path] { pub fn minimize_rpaths(rpaths: &[Path]) -> ~[Path] {
let set = map::HashMap(); let set = map::HashMap();
let mut minimized = ~[]; let mut minimized = ~[];
for rpaths.each |rpath| { for rpaths.each |rpath| {

View file

@ -9,7 +9,7 @@
// except according to those terms. // except according to those terms.
type t = { pub type t = {
module_asm: ~str, module_asm: ~str,
meta_sect_name: ~str, meta_sect_name: ~str,
data_layout: ~str, data_layout: ~str,

View file

@ -17,15 +17,15 @@ use middle::trans::common::{T_fn, T_i1, T_i8, T_i32,
T_size_t, T_void, T_vec2}; T_size_t, T_void, T_vec2};
use lib::llvm::{type_names, ModuleRef, ValueRef, TypeRef}; use lib::llvm::{type_names, ModuleRef, ValueRef, TypeRef};
type upcalls = pub type upcalls =
{trace: ValueRef, {trace: ValueRef,
call_shim_on_c_stack: ValueRef, call_shim_on_c_stack: ValueRef,
call_shim_on_rust_stack: ValueRef, call_shim_on_rust_stack: ValueRef,
rust_personality: ValueRef, rust_personality: ValueRef,
reset_stack_limit: ValueRef}; reset_stack_limit: ValueRef};
fn declare_upcalls(targ_cfg: @session::config, pub fn declare_upcalls(targ_cfg: @session::config,
llmod: ModuleRef) -> @upcalls { llmod: ModuleRef) -> @upcalls {
fn decl(llmod: ModuleRef, prefix: ~str, name: ~str, fn decl(llmod: ModuleRef, prefix: ~str, name: ~str,
tys: ~[TypeRef], rv: TypeRef) -> tys: ~[TypeRef], rv: TypeRef) ->
ValueRef { ValueRef {

View file

@ -14,7 +14,7 @@ use driver::session;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
use session::sess_os_to_meta_os; use session::sess_os_to_meta_os;
fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_os: session::os) -> target_strs::t {
return { return {
module_asm: ~"", module_asm: ~"",

View file

@ -14,7 +14,7 @@ use driver::session;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
use session::sess_os_to_meta_os; use session::sess_os_to_meta_os;
fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_os: session::os) -> target_strs::t {
return { return {
module_asm: ~"", module_asm: ~"",

View file

@ -15,10 +15,6 @@ use syntax::{ast, fold, attr};
use core::option; use core::option;
use core::vec; use core::vec;
export strip_unconfigured_items;
export metas_in_cfg;
export strip_items;
type in_cfg_pred = fn@(+attrs: ~[ast::attribute]) -> bool; type in_cfg_pred = fn@(+attrs: ~[ast::attribute]) -> bool;
type ctxt = @{ type ctxt = @{
@ -27,13 +23,13 @@ type ctxt = @{
// Support conditional compilation by transforming the AST, stripping out // Support conditional compilation by transforming the AST, stripping out
// any items that do not belong in the current configuration // any items that do not belong in the current configuration
fn strip_unconfigured_items(crate: @ast::crate) -> @ast::crate { pub fn strip_unconfigured_items(crate: @ast::crate) -> @ast::crate {
do strip_items(crate) |attrs| { do strip_items(crate) |attrs| {
in_cfg(/*bad*/copy crate.node.config, attrs) in_cfg(/*bad*/copy crate.node.config, attrs)
} }
} }
fn strip_items(crate: @ast::crate, in_cfg: in_cfg_pred) pub fn strip_items(crate: @ast::crate, in_cfg: in_cfg_pred)
-> @ast::crate { -> @ast::crate {
let ctxt = @{in_cfg: in_cfg}; let ctxt = @{in_cfg: in_cfg};
@ -179,7 +175,8 @@ fn in_cfg(+cfg: ast::crate_cfg, +attrs: ~[ast::attribute]) -> bool {
metas_in_cfg(cfg, attr::attr_metas(attrs)) metas_in_cfg(cfg, attr::attr_metas(attrs))
} }
fn metas_in_cfg(cfg: ast::crate_cfg, +metas: ~[@ast::meta_item]) -> bool { pub fn metas_in_cfg(cfg: ast::crate_cfg,
+metas: ~[@ast::meta_item]) -> bool {
// The "cfg" attributes on the item // The "cfg" attributes on the item
let cfg_metas = attr::find_meta_items_by_name(metas, ~"cfg"); let cfg_metas = attr::find_meta_items_by_name(metas, ~"cfg");

View file

@ -19,12 +19,10 @@ use syntax::attr;
use syntax::codemap; use syntax::codemap;
use syntax::fold; use syntax::fold;
export maybe_inject_libcore_ref;
const CORE_VERSION: &static/str = "0.6"; const CORE_VERSION: &static/str = "0.6";
fn maybe_inject_libcore_ref(sess: Session, pub fn maybe_inject_libcore_ref(sess: Session,
crate: @ast::crate) -> @ast::crate { crate: @ast::crate) -> @ast::crate {
if use_core(crate) { if use_core(crate) {
inject_libcore_ref(sess, crate) inject_libcore_ref(sess, crate)
} else { } else {

View file

@ -16,9 +16,7 @@ use syntax::ast;
use core::vec; use core::vec;
export inject_intrinsic; pub fn inject_intrinsic(sess: Session, crate: @ast::crate) -> @ast::crate {
fn inject_intrinsic(sess: Session, crate: @ast::crate) -> @ast::crate {
let intrinsic_module = @(include_str!("intrinsic.rs").to_owned()); let intrinsic_module = @(include_str!("intrinsic.rs").to_owned());
let item = parse::parse_item_from_source_str(~"<intrinsic>", let item = parse::parse_item_from_source_str(~"<intrinsic>",

View file

@ -27,8 +27,6 @@ use syntax::print::pprust;
use syntax::{ast, ast_util}; use syntax::{ast, ast_util};
use syntax::attr::attrs_contains_name; use syntax::attr::attrs_contains_name;
export modify_for_testing;
type node_id_gen = fn@() -> ast::node_id; type node_id_gen = fn@() -> ast::node_id;
type test = {span: span, path: ~[ast::ident], type test = {span: span, path: ~[ast::ident],
@ -42,8 +40,8 @@ type test_ctxt =
// Traverse the crate, collecting all the test functions, eliding any // Traverse the crate, collecting all the test functions, eliding any
// existing main functions, and synthesizing a main test harness // existing main functions, and synthesizing a main test harness
fn modify_for_testing(sess: session::Session, pub fn modify_for_testing(sess: session::Session,
crate: @ast::crate) -> @ast::crate { crate: @ast::crate) -> @ast::crate {
// We generate the test harness when building in the 'test' // We generate the test harness when building in the 'test'
// configuration, either with the '--test' or '--cfg test' // configuration, either with the '--test' or '--cfg test'

File diff suppressed because it is too large Load diff

View file

@ -144,32 +144,20 @@ pub mod middle {
} }
pub mod front { pub mod front {
#[legacy_exports]
pub mod config; pub mod config;
#[legacy_exports]
pub mod test; pub mod test;
#[legacy_exports]
pub mod core_inject; pub mod core_inject;
#[legacy_exports]
pub mod intrinsic_inject; pub mod intrinsic_inject;
} }
pub mod back { pub mod back {
#[legacy_exports]
pub mod link; pub mod link;
#[legacy_exports]
pub mod abi; pub mod abi;
#[legacy_exports]
pub mod upcall; pub mod upcall;
#[legacy_exports]
pub mod arm; pub mod arm;
#[legacy_exports]
pub mod x86; pub mod x86;
#[legacy_exports]
pub mod x86_64; pub mod x86_64;
#[legacy_exports]
pub mod rpath; pub mod rpath;
#[legacy_exports]
pub mod target_strs; pub mod target_strs;
} }
@ -180,14 +168,11 @@ pub mod metadata;
pub mod driver; pub mod driver;
pub mod util { pub mod util {
#[legacy_exports]
pub mod common; pub mod common;
#[legacy_exports]
pub mod ppaux; pub mod ppaux;
} }
pub mod lib { pub mod lib {
#[legacy_exports]
pub mod llvm; pub mod llvm;
} }

View file

@ -21,7 +21,7 @@ use core::str;
use core::vec; use core::vec;
use std::map::HashMap; use std::map::HashMap;
fn indent<R>(op: fn() -> R) -> R { pub fn indent<R>(op: fn() -> R) -> R {
// Use in conjunction with the log post-processor like `src/etc/indenter` // Use in conjunction with the log post-processor like `src/etc/indenter`
// to make debug output more readable. // to make debug output more readable.
debug!(">>"); debug!(">>");
@ -30,33 +30,33 @@ fn indent<R>(op: fn() -> R) -> R {
move r move r
} }
struct _indenter { pub struct _indenter {
_i: (), _i: (),
drop { debug!("<<"); } drop { debug!("<<"); }
} }
fn _indenter(_i: ()) -> _indenter { pub fn _indenter(_i: ()) -> _indenter {
_indenter { _indenter {
_i: () _i: ()
} }
} }
fn indenter() -> _indenter { pub fn indenter() -> _indenter {
debug!(">>"); debug!(">>");
_indenter(()) _indenter(())
} }
type flag = HashMap<~str, ()>; pub type flag = HashMap<~str, ()>;
fn field_expr(f: ast::field) -> @ast::expr { return f.node.expr; } pub fn field_expr(f: ast::field) -> @ast::expr { return f.node.expr; }
fn field_exprs(fields: ~[ast::field]) -> ~[@ast::expr] { pub fn field_exprs(fields: ~[ast::field]) -> ~[@ast::expr] {
fields.map(|f| f.node.expr) fields.map(|f| f.node.expr)
} }
// Takes a predicate p, returns true iff p is true for any subexpressions // Takes a predicate p, returns true iff p is true for any subexpressions
// of b -- skipping any inner loops (loop, while, loop_body) // of b -- skipping any inner loops (loop, while, loop_body)
fn loop_query(b: ast::blk, p: fn@(ast::expr_) -> bool) -> bool { pub fn loop_query(b: ast::blk, p: fn@(ast::expr_) -> bool) -> bool {
let rs = @mut false; let rs = @mut false;
let visit_expr: @fn(@ast::expr, let visit_expr: @fn(@ast::expr,
&&flag: @mut bool, &&flag: @mut bool,
@ -79,7 +79,7 @@ fn loop_query(b: ast::blk, p: fn@(ast::expr_) -> bool) -> bool {
// Takes a predicate p, returns true iff p is true for any subexpressions // Takes a predicate p, returns true iff p is true for any subexpressions
// of b -- skipping any inner loops (loop, while, loop_body) // of b -- skipping any inner loops (loop, while, loop_body)
fn block_query(b: ast::blk, p: fn@(@ast::expr) -> bool) -> bool { pub fn block_query(b: ast::blk, p: fn@(@ast::expr) -> bool) -> bool {
let rs = @mut false; let rs = @mut false;
let visit_expr: @fn(@ast::expr, let visit_expr: @fn(@ast::expr,
&&flag: @mut bool, &&flag: @mut bool,
@ -94,20 +94,20 @@ fn block_query(b: ast::blk, p: fn@(@ast::expr) -> bool) -> bool {
return *rs; return *rs;
} }
fn local_rhs_span(l: @ast::local, def: span) -> span { pub fn local_rhs_span(l: @ast::local, def: span) -> span {
match l.node.init { match l.node.init {
Some(i) => return i.span, Some(i) => return i.span,
_ => return def _ => return def
} }
} }
fn pluralize(n: uint, +s: ~str) -> ~str { pub fn pluralize(n: uint, +s: ~str) -> ~str {
if n == 1 { s } if n == 1 { s }
else { str::concat([s, ~"s"]) } else { str::concat([s, ~"s"]) }
} }
// A set of node IDs (used to keep track of which node IDs are for statements) // A set of node IDs (used to keep track of which node IDs are for statements)
type stmt_set = HashMap<ast::node_id, ()>; pub type stmt_set = HashMap<ast::node_id, ()>;
// //
// Local Variables: // Local Variables:

View file

@ -38,10 +38,10 @@ use core::str;
use core::vec; use core::vec;
use std::map::HashMap; use std::map::HashMap;
fn note_and_explain_region(cx: ctxt, pub fn note_and_explain_region(cx: ctxt,
prefix: ~str, prefix: ~str,
region: ty::Region, region: ty::Region,
suffix: ~str) { suffix: ~str) {
match explain_region_and_span(cx, region) { match explain_region_and_span(cx, region) {
(ref str, Some(span)) => { (ref str, Some(span)) => {
cx.sess.span_note( cx.sess.span_note(
@ -57,15 +57,14 @@ fn note_and_explain_region(cx: ctxt,
/// Returns a string like "the block at 27:31" that attempts to explain a /// Returns a string like "the block at 27:31" that attempts to explain a
/// lifetime in a way it might plausibly be understood. /// lifetime in a way it might plausibly be understood.
fn explain_region(cx: ctxt, region: ty::Region) -> ~str { pub fn explain_region(cx: ctxt, region: ty::Region) -> ~str {
let (res, _) = explain_region_and_span(cx, region); let (res, _) = explain_region_and_span(cx, region);
return res; return res;
} }
fn explain_region_and_span(cx: ctxt, region: ty::Region) pub fn explain_region_and_span(cx: ctxt, region: ty::Region)
-> (~str, Option<span>) -> (~str, Option<span>) {
{
return match region { return match region {
re_scope(node_id) => { re_scope(node_id) => {
match cx.items.find(node_id) { match cx.items.find(node_id) {
@ -136,12 +135,12 @@ fn explain_region_and_span(cx: ctxt, region: ty::Region)
} }
} }
fn bound_region_to_str(cx: ctxt, br: bound_region) -> ~str { pub fn bound_region_to_str(cx: ctxt, br: bound_region) -> ~str {
bound_region_to_str_adorned(cx, "&", br, "") bound_region_to_str_adorned(cx, "&", br, "")
} }
fn bound_region_to_str_adorned(cx: ctxt, prefix: &str, pub fn bound_region_to_str_adorned(cx: ctxt, prefix: &str,
br: bound_region, sep: &str) -> ~str { br: bound_region, sep: &str) -> ~str {
if cx.sess.verbose() { return fmt!("%s%?%s", prefix, br, sep); } if cx.sess.verbose() { return fmt!("%s%?%s", prefix, br, sep); }
match br { match br {
@ -154,7 +153,7 @@ fn bound_region_to_str_adorned(cx: ctxt, prefix: &str,
} }
} }
fn re_scope_id_to_str(cx: ctxt, node_id: ast::node_id) -> ~str { pub fn re_scope_id_to_str(cx: ctxt, node_id: ast::node_id) -> ~str {
match cx.items.find(node_id) { match cx.items.find(node_id) {
Some(ast_map::node_block(ref blk)) => { Some(ast_map::node_block(ref blk)) => {
fmt!("<block at %s>", fmt!("<block at %s>",
@ -197,12 +196,12 @@ fn re_scope_id_to_str(cx: ctxt, node_id: ast::node_id) -> ~str {
// In general, if you are giving a region error message, // In general, if you are giving a region error message,
// you should use `explain_region()` or, better yet, // you should use `explain_region()` or, better yet,
// `note_and_explain_region()` // `note_and_explain_region()`
fn region_to_str(cx: ctxt, region: Region) -> ~str { pub fn region_to_str(cx: ctxt, region: Region) -> ~str {
region_to_str_adorned(cx, "&", region, "") region_to_str_adorned(cx, "&", region, "")
} }
fn region_to_str_adorned(cx: ctxt, prefix: &str, pub fn region_to_str_adorned(cx: ctxt, prefix: &str,
region: Region, sep: &str) -> ~str { region: Region, sep: &str) -> ~str {
if cx.sess.verbose() { if cx.sess.verbose() {
return fmt!("%s%?%s", prefix, region, sep); return fmt!("%s%?%s", prefix, region, sep);
} }
@ -223,7 +222,7 @@ fn region_to_str_adorned(cx: ctxt, prefix: &str,
} }
} }
fn mt_to_str(cx: ctxt, m: mt) -> ~str { pub fn mt_to_str(cx: ctxt, m: mt) -> ~str {
let mstr = match m.mutbl { let mstr = match m.mutbl {
ast::m_mutbl => "mut ", ast::m_mutbl => "mut ",
ast::m_imm => "", ast::m_imm => "",
@ -232,7 +231,7 @@ fn mt_to_str(cx: ctxt, m: mt) -> ~str {
return fmt!("%s%s", mstr, ty_to_str(cx, m.ty)); return fmt!("%s%s", mstr, ty_to_str(cx, m.ty));
} }
fn vstore_to_str(cx: ctxt, vs: ty::vstore) -> ~str { pub fn vstore_to_str(cx: ctxt, vs: ty::vstore) -> ~str {
match vs { match vs {
ty::vstore_fixed(n) => fmt!("%u", n), ty::vstore_fixed(n) => fmt!("%u", n),
ty::vstore_uniq => ~"~", ty::vstore_uniq => ~"~",
@ -241,7 +240,7 @@ fn vstore_to_str(cx: ctxt, vs: ty::vstore) -> ~str {
} }
} }
fn vstore_ty_to_str(cx: ctxt, ty: ~str, vs: ty::vstore) -> ~str { pub fn vstore_ty_to_str(cx: ctxt, ty: ~str, vs: ty::vstore) -> ~str {
match vs { match vs {
ty::vstore_fixed(_) => { ty::vstore_fixed(_) => {
fmt!("%s/%s", ty, vstore_to_str(cx, vs)) fmt!("%s/%s", ty, vstore_to_str(cx, vs))
@ -253,8 +252,8 @@ fn vstore_ty_to_str(cx: ctxt, ty: ~str, vs: ty::vstore) -> ~str {
} }
} }
fn proto_ty_to_str(_cx: ctxt, proto: ast::Proto, pub fn proto_ty_to_str(_cx: ctxt, proto: ast::Proto,
followed_by_word: bool) -> &static/str { followed_by_word: bool) -> &static/str {
match proto { match proto {
ast::ProtoBare if followed_by_word => "extern ", ast::ProtoBare if followed_by_word => "extern ",
ast::ProtoBare => "extern", ast::ProtoBare => "extern",
@ -264,34 +263,34 @@ fn proto_ty_to_str(_cx: ctxt, proto: ast::Proto,
} }
} }
fn expr_repr(cx: ctxt, expr: @ast::expr) -> ~str { pub fn expr_repr(cx: ctxt, expr: @ast::expr) -> ~str {
fmt!("expr(%d: %s)", fmt!("expr(%d: %s)",
expr.id, expr.id,
pprust::expr_to_str(expr, cx.sess.intr())) pprust::expr_to_str(expr, cx.sess.intr()))
} }
fn pat_repr(cx: ctxt, pat: @ast::pat) -> ~str { pub fn pat_repr(cx: ctxt, pat: @ast::pat) -> ~str {
fmt!("pat(%d: %s)", fmt!("pat(%d: %s)",
pat.id, pat.id,
pprust::pat_to_str(pat, cx.sess.intr())) pprust::pat_to_str(pat, cx.sess.intr()))
} }
fn tys_to_str(cx: ctxt, ts: &[t]) -> ~str { pub fn tys_to_str(cx: ctxt, ts: &[t]) -> ~str {
let tstrs = ts.map(|t| ty_to_str(cx, *t)); let tstrs = ts.map(|t| ty_to_str(cx, *t));
fmt!("(%s)", str::connect(tstrs, ", ")) fmt!("(%s)", str::connect(tstrs, ", "))
} }
fn bound_to_str(cx: ctxt, b: param_bound) -> ~str { pub fn bound_to_str(cx: ctxt, b: param_bound) -> ~str {
ty::param_bound_to_str(cx, &b) ty::param_bound_to_str(cx, &b)
} }
fn fn_sig_to_str(cx: ctxt, typ: &ty::FnSig) -> ~str { pub fn fn_sig_to_str(cx: ctxt, typ: &ty::FnSig) -> ~str {
fmt!("fn%s -> %s", fmt!("fn%s -> %s",
tys_to_str(cx, typ.inputs.map(|a| a.ty)), tys_to_str(cx, typ.inputs.map(|a| a.ty)),
ty_to_str(cx, typ.output)) ty_to_str(cx, typ.output))
} }
fn ty_to_str(cx: ctxt, typ: t) -> ~str { pub fn ty_to_str(cx: ctxt, typ: t) -> ~str {
fn fn_input_to_str(cx: ctxt, input: ty::arg) -> ~str { fn fn_input_to_str(cx: ctxt, input: ty::arg) -> ~str {
let ty::arg {mode: mode, ty: ty} = input; let ty::arg {mode: mode, ty: ty} = input;
let modestr = match canon_mode(cx, mode) { let modestr = match canon_mode(cx, mode) {
@ -449,10 +448,10 @@ fn ty_to_str(cx: ctxt, typ: t) -> ~str {
} }
} }
fn parameterized(cx: ctxt, pub fn parameterized(cx: ctxt,
base: &str, base: &str,
self_r: Option<ty::Region>, self_r: Option<ty::Region>,
tps: &[ty::t]) -> ~str { tps: &[ty::t]) -> ~str {
let r_str = match self_r { let r_str = match self_r {
None => ~"", None => ~"",
@ -469,7 +468,7 @@ fn parameterized(cx: ctxt,
} }
} }
fn ty_to_short_str(cx: ctxt, typ: t) -> ~str { pub fn ty_to_short_str(cx: ctxt, typ: t) -> ~str {
let mut s = encoder::encoded_ty(cx, typ); let mut s = encoder::encoded_ty(cx, typ);
if str::len(s) >= 32u { s = str::slice(s, 0u, 32u); } if str::len(s) >= 32u { s = str::slice(s, 0u, 32u); }
return s; return s;