+// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
// error-pattern:yummy
#![feature(box_syntax)]
#![feature(rustc_private)]
#![feature(tool_lints)]
+#![feature(try_from)]
#![allow(unknown_lints, clippy::missing_docs_in_private_items)]
-use rustc_driver::{self, driver::CompileController, Compilation};
-use rustc_plugin;
+// FIXME: switch to something more ergonomic here, once available.
+// (currently there is no way to opt into sysroot crates w/o `extern crate`)
+#[allow(unused_extern_crates)]
+extern crate rustc_driver;
+#[allow(unused_extern_crates)]
+extern crate rustc_plugin;
+use self::rustc_driver::{driver::CompileController, Compilation};
+
+use std::convert::TryInto;
use std::path::Path;
use std::process::{exit, Command};
}
pub fn main() {
+ rustc_driver::init_rustc_env_logger();
exit(rustc_driver::run(move || {
use std::env;
args.extend(
extra_args
.split("__CLIPPY_HACKERY__")
- .filter(|s| !s.is_empty())
- .map(str::to_owned),
+ .filter_map(|s| if s.is_empty() {
+ None
+ } else {
+ Some(s.to_string())
+ })
);
}
}
let args = args;
rustc_driver::run_compiler(&args, Box::new(controller), None, None)
- }) as i32)
+ }).try_into().expect("exit code too large"))
}