1 //! Library used by tidy and other tools.
3 //! This library contains the tidy lints and exposes it
4 //! to be used by tools.
6 #![deny(rust_2018_idioms)]
9 extern crate serde_json;
11 extern crate serde_derive;
18 ($e:expr, $p:expr) => (match $e {
20 Err(e) => panic!("{} failed on {} with {}", stringify!($e), ($p).display(), e),
23 ($e:expr) => (match $e {
25 Err(e) => panic!("{} failed with {}", stringify!($e), e),
29 macro_rules! tidy_error {
30 ($bad:expr, $fmt:expr, $($arg:tt)*) => ({
32 eprint!("tidy error: ");
33 eprintln!($fmt, $($arg)*);
46 pub mod unstable_book;
49 fn filter_dirs(path: &Path) -> bool {
53 "src/llvm-emscripten",
55 "src/librustc_data_structures/owning_ref",
61 "src/tools/rust-installer",
72 skip.iter().any(|p| path.ends_with(p))
75 fn walk_many(paths: &[&Path], skip: &mut dyn FnMut(&Path) -> bool, f: &mut dyn FnMut(&Path)) {
81 fn walk(path: &Path, skip: &mut dyn FnMut(&Path) -> bool, f: &mut dyn FnMut(&Path)) {
82 if let Ok(dir) = fs::read_dir(path) {
84 let entry = t!(entry);
85 let kind = t!(entry.file_type());
86 let path = entry.path();