mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-18 03:25:55 +00:00
libsyntax: Remove some more @fn
uses
This commit is contained in:
parent
d126be068b
commit
6a8169db0a
@ -16,9 +16,10 @@ use extra::getopts::groups::getopts;
|
||||
use syntax::ast_util::*;
|
||||
use syntax::codemap::{dummy_sp, Spanned};
|
||||
use syntax::ext::base::ExtCtxt;
|
||||
use syntax::{ast, attr, codemap, diagnostic, fold};
|
||||
use syntax::{ast, attr, codemap, diagnostic, fold, visit};
|
||||
use syntax::attr::AttrMetaMethods;
|
||||
use syntax::fold::ast_fold;
|
||||
use syntax::visit::Visitor;
|
||||
use rustc::back::link::output_type_exe;
|
||||
use rustc::back::link;
|
||||
use rustc::driver::session::{lib_crate, bin_crate};
|
||||
@ -28,6 +29,7 @@ use package_source::PkgSrc;
|
||||
use workspace::pkg_parent_workspaces;
|
||||
use path_util::{installed_library_in_workspace, U_RWX, rust_path, system_library, target_build_dir};
|
||||
use messages::error;
|
||||
use conditions::nonexistent_package::cond;
|
||||
|
||||
pub use target::{OutputType, Main, Lib, Bench, Test, JustOne, lib_name_of, lib_crate_filename};
|
||||
use workcache_support::{digest_file_with_date, digest_only_date};
|
||||
@ -395,31 +397,28 @@ pub fn compile_crate(ctxt: &BuildContext,
|
||||
compile_input(ctxt, exec, pkg_id, crate, workspace, flags, cfgs, opt, what)
|
||||
}
|
||||
|
||||
struct ViewItemVisitor<'self> {
|
||||
context: &'self BuildContext,
|
||||
parent: &'self PkgId,
|
||||
sess: session::Session,
|
||||
exec: &'self mut workcache::Exec,
|
||||
c: &'self ast::Crate,
|
||||
save: @fn(Path),
|
||||
}
|
||||
|
||||
/// Collect all `extern mod` directives in `c`, then
|
||||
/// try to install their targets, failing if any target
|
||||
/// can't be found.
|
||||
pub fn find_and_install_dependencies(context: &BuildContext,
|
||||
parent: &PkgId,
|
||||
sess: session::Session,
|
||||
exec: &mut workcache::Exec,
|
||||
c: &ast::Crate,
|
||||
save: @fn(Path)
|
||||
) {
|
||||
use conditions::nonexistent_package::cond;
|
||||
|
||||
do c.each_view_item() |vi: &ast::view_item| {
|
||||
impl<'self> Visitor<()> for ViewItemVisitor<'self> {
|
||||
fn visit_view_item(&mut self, vi: &ast::view_item, env: ()) {
|
||||
debug!("A view item!");
|
||||
match vi.node {
|
||||
// ignore metadata, I guess
|
||||
ast::view_item_extern_mod(lib_ident, path_opt, _, _) => {
|
||||
let lib_name = match path_opt {
|
||||
Some(p) => p,
|
||||
None => sess.str_of(lib_ident)
|
||||
None => self.sess.str_of(lib_ident)
|
||||
};
|
||||
debug!("Finding and installing... %s", lib_name);
|
||||
// Check standard Rust library path first
|
||||
match system_library(&context.sysroot(), lib_name) {
|
||||
match system_library(&self.context.sysroot(), lib_name) {
|
||||
Some(ref installed_path) => {
|
||||
debug!("It exists: %s", installed_path.to_str());
|
||||
// Say that [path for c] has a discovered dependency on
|
||||
@ -428,8 +427,9 @@ pub fn find_and_install_dependencies(context: &BuildContext,
|
||||
// I'm not sure what the right thing is.
|
||||
// Now we know that this crate has a discovered dependency on
|
||||
// installed_path
|
||||
exec.discover_input("binary", installed_path.to_str(),
|
||||
digest_only_date(installed_path));
|
||||
self.exec.discover_input("binary",
|
||||
installed_path.to_str(),
|
||||
digest_only_date(installed_path));
|
||||
}
|
||||
None => {
|
||||
// FIXME #8711: need to parse version out of path_opt
|
||||
@ -437,35 +437,44 @@ pub fn find_and_install_dependencies(context: &BuildContext,
|
||||
lib_name.to_str());
|
||||
// Try to install it
|
||||
let pkg_id = PkgId::new(lib_name);
|
||||
let workspaces = pkg_parent_workspaces(&context.context, &pkg_id);
|
||||
let workspaces = pkg_parent_workspaces(&self.context.context,
|
||||
&pkg_id);
|
||||
let dep_workspace = if workspaces.is_empty() {
|
||||
error(fmt!("Couldn't find package %s, which is needed by %s, \
|
||||
in any of the workspaces in the RUST_PATH (%?)",
|
||||
lib_name, parent.to_str(), rust_path()));
|
||||
lib_name,
|
||||
self.parent.to_str(),
|
||||
rust_path()));
|
||||
cond.raise((pkg_id.clone(), ~"Dependency not found"))
|
||||
}
|
||||
else {
|
||||
workspaces[0]
|
||||
};
|
||||
let (outputs_disc, inputs_disc) =
|
||||
context.install(PkgSrc::new(dep_workspace.clone(),
|
||||
false, pkg_id), &JustOne(Path(lib_crate_filename)));
|
||||
self.context.install(PkgSrc::new(dep_workspace.clone(),
|
||||
false,
|
||||
pkg_id),
|
||||
&JustOne(Path(
|
||||
lib_crate_filename)));
|
||||
debug!("Installed %s, returned %? dependencies and \
|
||||
%? transitive dependencies",
|
||||
lib_name, outputs_disc.len(), inputs_disc.len());
|
||||
for dep in outputs_disc.iter() {
|
||||
debug!("Discovering a binary input: %s", dep.to_str());
|
||||
exec.discover_input("binary", dep.to_str(),
|
||||
digest_only_date(dep));
|
||||
self.exec.discover_input("binary",
|
||||
dep.to_str(),
|
||||
digest_only_date(dep));
|
||||
}
|
||||
for &(ref what, ref dep) in inputs_disc.iter() {
|
||||
if *what == ~"file" {
|
||||
exec.discover_input(*what, *dep,
|
||||
digest_file_with_date(&Path(*dep)));
|
||||
self.exec.discover_input(*what,
|
||||
*dep,
|
||||
digest_file_with_date(&Path(*dep)));
|
||||
}
|
||||
else if *what == ~"binary" {
|
||||
exec.discover_input(*what, *dep,
|
||||
digest_only_date(&Path(*dep)));
|
||||
self.exec.discover_input(*what,
|
||||
*dep,
|
||||
digest_only_date(&Path(*dep)));
|
||||
}
|
||||
else {
|
||||
fail!("Bad kind: %s", *what);
|
||||
@ -480,14 +489,36 @@ pub fn find_and_install_dependencies(context: &BuildContext,
|
||||
let install_dir = installed_library.pop();
|
||||
debug!("Installed %s into %s [%?]", lib_name, install_dir.to_str(),
|
||||
datestamp(&installed_library));
|
||||
save(install_dir);
|
||||
(self.save)(install_dir);
|
||||
}
|
||||
}}
|
||||
// Ignore `use`s
|
||||
_ => ()
|
||||
}
|
||||
true
|
||||
|
||||
visit::walk_view_item(self, vi, env)
|
||||
}
|
||||
}
|
||||
|
||||
/// Collect all `extern mod` directives in `c`, then
|
||||
/// try to install their targets, failing if any target
|
||||
/// can't be found.
|
||||
pub fn find_and_install_dependencies(context: &BuildContext,
|
||||
parent: &PkgId,
|
||||
sess: session::Session,
|
||||
exec: &mut workcache::Exec,
|
||||
c: &ast::Crate,
|
||||
save: @fn(Path)) {
|
||||
debug!("In find_and_install_dependencies...");
|
||||
let mut visitor = ViewItemVisitor {
|
||||
context: context,
|
||||
parent: parent,
|
||||
sess: sess,
|
||||
exec: exec,
|
||||
c: c,
|
||||
save: save,
|
||||
};
|
||||
visit::walk_crate(&mut visitor, c, ())
|
||||
}
|
||||
|
||||
pub fn mk_string_lit(s: @str) -> ast::lit {
|
||||
|
@ -236,13 +236,6 @@ fn print_diagnostic(topic: &str, lvl: level, msg: &str) {
|
||||
print_maybe_styled(fmt!("%s\n", msg), term::attr::Bold);
|
||||
}
|
||||
|
||||
pub fn collect(messages: @mut ~[~str])
|
||||
-> @fn(Option<(@codemap::CodeMap, Span)>, &str, level) {
|
||||
let f: @fn(Option<(@codemap::CodeMap, Span)>, &str, level) =
|
||||
|_o, msg: &str, _l| { messages.push(msg.to_str()); };
|
||||
f
|
||||
}
|
||||
|
||||
pub struct DefaultEmitter;
|
||||
|
||||
impl Emitter for DefaultEmitter {
|
||||
|
Loading…
Reference in New Issue
Block a user