about summary refs log tree commit diff
diff options
context:
space:
mode:
authorkennytm <kennytm@gmail.com>2017-12-30 15:47:00 +0800
committerkennytm <kennytm@gmail.com>2017-12-30 15:50:53 +0800
commit4577a70934b6167862586cbb7f52b75fad448d05 (patch)
tree6afe4654226b092f8f9a4fb07adc067478d02265
parent470a8e1a97ceb34d0a10dcce99d24f3bfcd6ea4e (diff)
downloadrust-4577a70934b6167862586cbb7f52b75fad448d05.tar.gz
rust-4577a70934b6167862586cbb7f52b75fad448d05.zip
Add a tidy check to ensure all files have 1 or 2 trailing newlines.
-rw-r--r--src/tools/tidy/src/style.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs
index 40d84b98d3a..b784a0e4c5f 100644
--- a/src/tools/tidy/src/style.rs
+++ b/src/tools/tidy/src/style.rs
@@ -130,6 +130,7 @@ pub fn check(path: &Path, bad: &mut bool) {
         let skip_tab = contents.contains("ignore-tidy-tab");
         let skip_length = contents.contains("ignore-tidy-linelength");
         let skip_end_whitespace = contents.contains("ignore-tidy-end-whitespace");
+        let mut trailing_new_lines = 0;
         for (i, line) in contents.split("\n").enumerate() {
             let mut err = |msg: &str| {
                 tidy_error!(bad, "{}:{}: {}", file.display(), i + 1, msg);
@@ -161,10 +162,20 @@ pub fn check(path: &Path, bad: &mut bool) {
             if filename.ends_with(".cpp") && line.contains("llvm_unreachable") {
                 err(LLVM_UNREACHABLE_INFO);
             }
+            if line.is_empty() {
+                trailing_new_lines += 1;
+            } else {
+                trailing_new_lines = 0;
+            }
         }
         if !licenseck(file, &contents) {
             tidy_error!(bad, "{}: incorrect license", file.display());
         }
+        match trailing_new_lines {
+            0 => tidy_error!(bad, "{}: missing trailing newline", file.display()),
+            1 | 2 => {}
+            n => tidy_error!(bad, "{}: too many trailing newlines ({})", file.display(), n),
+        };
     })
 }