Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a tidy check for missing or too many trailing newlines. #47064

Merged
merged 3 commits into from
Jan 1, 2018

Conversation

kennytm
Copy link
Member

@kennytm kennytm commented Dec 29, 2017

I've noticed recently there are lots of review comments requesting to fix trailing newlines. If this is going to be an official style here, it's better to let the CI do this repetitive check.

@rust-highfive
Copy link
Collaborator

r? @nikomatsakis

(rust_highfive has picked a reviewer for you, use r? to override)

@kennytm kennytm added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 29, 2017
}
if !licenseck(file, &contents) {
tidy_error!(bad, "{}: incorrect license", file.display());
}
if !has_trailing_new_line {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: What is almost as bad as no trailing newline?
A: Multiple trailing newlines!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petrochenkov The change for that is going to be huge 😰 (213 files affected)

tidy error: src/libstd_unicode/tables.rs: too many trailing newlines (2)
tidy error: src/test/ui/did_you_mean/recursion_limit_deref.rs: too many trailing newlines (2)
tidy error: src/test/ui/did_you_mean/recursion_limit_macro.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-rustc_const_unstable.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-allocator_internals.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-wasm_import_memory.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate/issue-43106-gating-of-rustc_deprecated.rs: too many trailing newlines (2)
tidy error: src/test/ui/fmt/format-string-error.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-compiler-builtins.rs: too many trailing newlines (2)
tidy error: src/test/ui/macro_backtrace/auxiliary/ping.rs: too many trailing newlines (2)
tidy error: src/test/ui/mismatched_types/trait-impl-fn-incompatibility.rs: too many trailing newlines (2)
tidy error: src/test/ui/mismatched_types/main.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-match_beginning_vert.rs: too many trailing newlines (2)
tidy error: src/test/ui/borrowck/mut-borrow-outside-loop.rs: too many trailing newlines (2)
tidy error: src/test/ui/borrowck/mut-borrow-in-loop.rs: too many trailing newlines (2)
tidy error: src/test/ui/generator/borrowing.rs: too many trailing newlines (2)
tidy error: src/test/ui/trait-alias.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-dropck-ugeh.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-i128_type.rs: too many trailing newlines (2)
tidy error: src/test/ui/region-borrow-params-issue-29793-small.rs: too many trailing newlines (2)
tidy error: src/test/ui/span/dropck-object-cycle.rs: too many trailing newlines (2)
tidy error: src/test/ui/span/suggestion-non-ascii.rs: too many trailing newlines (2)
tidy error: src/test/ui/unsized-enum2.rs: too many trailing newlines (2)
tidy error: src/test/ui/issue-40782.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-never_type.rs: too many trailing newlines (2)
tidy error: src/test/ui/nll/projection-return.rs: too many trailing newlines (2)
tidy error: src/test/ui/lifetime-errors/ex3-both-anon-regions-3.rs: too many trailing newlines (2)
tidy error: src/test/ui/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs: too many trailing newlines (2)
tidy error: src/test/ui/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs: too many trailing newlines (2)
tidy error: src/test/ui/update-references.sh: too many trailing newlines (3)
tidy error: src/test/ui/feature-gate-needs-allocator.rs: too many trailing newlines (2)
tidy error: src/test/ui/feature-gate-allow_fail.rs: too many trailing newlines (2)
tidy error: src/test/ui/unsafe-const-fn.rs: too many trailing newlines (2)
tidy error: src/test/codegen-units/item-collection/static-init.rs: too many trailing newlines (2)
tidy error: src/test/codegen-units/item-collection/unreferenced-inline-function.rs: too many trailing newlines (2)
tidy error: src/test/codegen-units/item-collection/auxiliary/cgu_generic_function.rs: too many trailing newlines (2)
tidy error: src/test/codegen-units/partitioning/auxiliary/cgu_generic_function.rs: too many trailing newlines (2)
tidy error: src/test/run-pass-fulldeps/binary-heap-panic-safe.rs: too many trailing newlines (2)
tidy error: src/test/run-pass-fulldeps/proc-macro/expand-with-a-macro.rs: too many trailing newlines (2)
tidy error: src/test/run-pass-fulldeps/proc-macro/auxiliary/expand-with-a-macro.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/issue-15318-2.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/issue-38129.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/issue-20727-2.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/issue-19190-3.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/issue-23207.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/inline_cross/issue-32881.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs: too many trailing newlines (2)
tidy error: src/test/rustdoc/auxiliary/issue-23207-2.rs: too many trailing newlines (2)
tidy error: src/test/incremental/hashes/exported_vs_not.rs: too many trailing newlines (2)
tidy error: src/test/incremental/hashes/enum_defs.rs: too many trailing newlines (3)
tidy error: src/test/incremental/hashes/inline_asm.rs: too many trailing newlines (4)
tidy error: src/test/incremental/change_crate_order/auxiliary/a.rs: too many trailing newlines (2)
tidy error: src/test/incremental/change_crate_order/auxiliary/b.rs: too many trailing newlines (2)
tidy error: src/test/incremental/span_hash_stable/main.rs: too many trailing newlines (2)
tidy error: src/test/incremental/krate_reassign_34991/auxiliary/a.rs: too many trailing newlines (2)
tidy error: src/test/incremental/krate-inherent.rs: too many trailing newlines (2)
tidy error: src/test/incremental/issue-39569.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-6.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/issue-40350.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/unreachable-arm.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/struct-fields-shorthand.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/match-byte-array-patterns-2.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/issue-30236.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-2.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-3.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/issue-26905.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/catch-maybe-bad-lifetime.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/type-mismatch-multiple.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/const-eval-overflow-3b.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-7.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/unreachable-loop-patterns.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/uninhabited-irrefutable.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/never-assign-wrong-type.rs: too many trailing newlines (3)
tidy error: src/test/compile-fail/macro-follow.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/bad-lint-cap3.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_inclusive_gate.rs: too many trailing newlines (3)
tidy error: src/test/compile-fail/trait-alias.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/enum-discrim-autosizing.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/impl-trait/where-allowed.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/binop-logic-float.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/deriving-copyclone.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/recursive-types-are-not-uninhabited.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/match-argm-statics-2.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/wf-outlives-ty-in-fn-or-trait.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/return-unit-from-diverging.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/allocator/two-allocators2.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/allocator/two-allocators.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/unreachable-try-pattern.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/deriving-primitive.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/return-from-diverging.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/call-fn-never-arg-wrong-type.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/catch-opt-init.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/panic-runtime/libtest-unwinds.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-4.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/issue-30240-b.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/range_traits-5.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/catch-bad-lifetime.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/uninhabited-patterns.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/E0619.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/auxiliary/default_ty_param_cross_crate_crate.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/transmute-imut-to-mut.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/patkind-litrange-no-expr.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail/inhabitedness-infinite-loop.rs: too many trailing newlines (2)
tidy error: src/test/run-fail/cast-never.rs: too many trailing newlines (2)
tidy error: src/test/run-fail/never-associated-type.rs: too many trailing newlines (2)
tidy error: src/test/run-fail/never-type-arg.rs: too many trailing newlines (2)
tidy error: src/test/run-fail/call-fn-never-arg.rs: too many trailing newlines (2)
tidy error: src/test/run-fail/return-never-coerce.rs: too many trailing newlines (3)
tidy error: src/test/run-pass/macro-first-set.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/project-cache-issue-31849.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/mir_constval_adts.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/empty-types-in-patterns.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-26905.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/never-result.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/inc-range-pat.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue28498-must-work-ex2.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/impl-for-never.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-39709.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue_26873_multifile/A/mod.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue_26873_multifile/A/B.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue_26873_multifile/A/C.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue_26873_multifile/mod.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-21400.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-26873-onefile.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/macro-follow.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue24687-embed-debuginfo/auxiliary/issue24687_lib.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/macro-nested_expr.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/asm-concat-src.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/optimization-fuel-1.rs: too many trailing newlines (3)
tidy error: src/test/run-pass/range_inclusive_gate.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/derive-no-std.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/lint-cap.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/deriving-copyclone.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/thinlto/thin-lto-inlines2.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/allocator/xcrate-use2.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-33287.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-24313.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/optimization-fuel-0.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/nll/rc-loop.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/signal-alternate-stack-cleanup.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/const-fn-feature-flags.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/link-cfg-works.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue28498-ugeh-ex1.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/macro-pat-neg-lit.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-30371.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/issue-23699.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/discriminant_value-wrapper.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/never_coercions.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/auxiliary/issue-17718-aux.rs: too many trailing newlines (2)
tidy error: src/test/run-pass/auxiliary/derive-no-std.rs: too many trailing newlines (2)
tidy error: src/test/ui-fulldeps/update-references.sh: too many trailing newlines (3)
tidy error: src/test/codegen/nounwind.rs: too many trailing newlines (2)
tidy error: src/test/codegen/likely.rs: too many trailing newlines (2)
tidy error: src/test/codegen/prefetch.rs: too many trailing newlines (3)
tidy error: src/test/parse-fail/lex-bad-char-literals-1.rs: too many trailing newlines (2)
tidy error: src/test/parse-fail/range_inclusive_dotdotdot.rs: too many trailing newlines (2)
tidy error: src/test/parse-fail/range_inclusive_gate.rs: too many trailing newlines (3)
tidy error: src/test/parse-fail/lex-bad-char-literals-2.rs: too many trailing newlines (2)
tidy error: src/test/parse-fail/range_inclusive.rs: too many trailing newlines (2)
tidy error: src/test/debuginfo/unreachable-locals.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail-fulldeps/dropck_tarena_unsound_drop.rs: too many trailing newlines (2)
tidy error: src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-bad.rs: too many trailing newlines (2)
tidy error: src/test/run-make/lto-no-link-whole-rlib/lib2.rs: too many trailing newlines (2)
tidy error: src/test/run-make/issue-28595/b.c: too many trailing newlines (2)
tidy error: src/test/run-make/a-b-a-linker-guard/a.rs: too many trailing newlines (3)
tidy error: src/test/run-make/windows-subsystem/console.rs: too many trailing newlines (2)
tidy error: src/test/run-make/reproducible-build/reproducible-build.rs: too many trailing newlines (3)
tidy error: src/test/run-make/sanitizer-staticlib-link/program.c: too many trailing newlines (2)
tidy error: src/test/run-make/stable-symbol-names/stable-symbol-names2.rs: too many trailing newlines (2)
tidy error: src/test/run-make/issue-18943/foo.rs: too many trailing newlines (2)
tidy error: src/test/pretty/cast-lt.rs: too many trailing newlines (2)
tidy error: src/libstd/sys/unix/l4re.rs: too many trailing newlines (2)
tidy error: src/libstd/os/dragonfly/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/macos/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/bitrig/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/netbsd/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/ios/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/freebsd/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/android/raw.rs: too many trailing newlines (2)
tidy error: src/libstd/os/android/fs.rs: too many trailing newlines (2)
tidy error: src/libstd/os/openbsd/fs.rs: too many trailing newlines (2)
tidy error: src/librustc_typeck/variance/mod.rs: too many trailing newlines (2)
tidy error: src/librustc/middle/free_region.rs: too many trailing newlines (2)
tidy error: src/librustc/util/nodemap.rs: too many trailing newlines (2)
tidy error: src/librustc/ty/maps/values.rs: too many trailing newlines (2)
tidy error: src/librustc/ty/inhabitedness/mod.rs: too many trailing newlines (2)
tidy error: src/librustc/ty/inhabitedness/def_id_forest.rs: too many trailing newlines (2)
tidy error: src/librustc/ty/erase_regions.rs: too many trailing newlines (2)
tidy error: src/librustc/ty/codec.rs: too many trailing newlines (2)
tidy error: src/librustc/infer/region_constraints/taint.rs: too many trailing newlines (2)
tidy error: src/librustc/infer/mod.rs: too many trailing newlines (2)
tidy error: src/librustc/macros.rs: too many trailing newlines (2)
tidy error: src/librustc/dep_graph/raii.rs: too many trailing newlines (2)
tidy error: src/librustc/mir/mono.rs: too many trailing newlines (2)
tidy error: src/librustc/ich/hcx.rs: too many trailing newlines (2)
tidy error: src/librustdoc/build.rs: too many trailing newlines (2)
tidy error: src/librustc_mir/borrow_check/nll/region_infer/dump_mir.rs: too many trailing newlines (2)
tidy error: src/libsyntax/test_snippet.rs: too many trailing newlines (2)
tidy error: src/librustc_trans/time_graph.rs: too many trailing newlines (2)
tidy error: src/librustc_trans/mir/place.rs: too many trailing newlines (2)
tidy error: src/librustc_trans/common.rs: too many trailing newlines (2)
tidy error: src/libcore/tests/num/flt2dec/mod.rs: too many trailing newlines (2)
tidy error: src/libcore/tests/num/flt2dec/estimator.rs: too many trailing newlines (2)
tidy error: src/libcore/tests/num/flt2dec/strategy/dragon.rs: too many trailing newlines (2)
tidy error: src/libcore/tests/num/flt2dec/strategy/grisu.rs: too many trailing newlines (2)
tidy error: src/libcore/tests/num/bignum.rs: too many trailing newlines (2)
tidy error: src/libcore/num/flt2dec/decoder.rs: too many trailing newlines (2)
tidy error: src/libcore/num/flt2dec/mod.rs: too many trailing newlines (2)
tidy error: src/libcore/num/flt2dec/estimator.rs: too many trailing newlines (2)
tidy error: src/libcore/internal_macros.rs: too many trailing newlines (2)
tidy error: src/librustc_data_structures/accumulate_vec.rs: too many trailing newlines (2)
tidy error: src/librustc_driver/derive_registrar.rs: too many trailing newlines (2)

@kennytm kennytm force-pushed the force-trailing-newlines branch from de5e62c to 4577a70 Compare December 30, 2017 07:51
@kennytm kennytm changed the title Add a tidy check for missing trailing newline. Add a tidy check for missing or too many trailing newlines. Dec 30, 2017
@kennytm
Copy link
Member Author

kennytm commented Dec 30, 2017

@petrochenkov Modified the style check to error on having ≥3 trailing newlines as well.

I allowed for 2 trailing newlines since that affected too many files. Besides, having multiple trailing newlines isn't as evil as no trailing newlines (which breaks cat).

@estebank
Copy link
Contributor

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Dec 31, 2017

📌 Commit 4577a70 has been approved by estebank

@bors
Copy link
Contributor

bors commented Jan 1, 2018

⌛ Testing commit 4577a70 with merge f3ca88c...

bors added a commit that referenced this pull request Jan 1, 2018
Add a tidy check for missing or too many trailing newlines.

I've noticed recently there are lots of review comments requesting to fix trailing newlines. If this is going to be an official style here, it's better to let the CI do this repetitive check.
@bors
Copy link
Contributor

bors commented Jan 1, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: estebank
Pushing f3ca88c to master...

@bors bors merged commit 4577a70 into rust-lang:master Jan 1, 2018
@kennytm kennytm deleted the force-trailing-newlines branch January 1, 2018 08:40
kennytm added a commit to kennytm/rust that referenced this pull request Apr 23, 2019
…, r=kennytm

Disallow double trailing newlines in tidy

This wasn't done previously in rust-lang#47064 (comment) as it affected too many files, but I think it's best to fix it now so that the number of files with double trailing newlines doesn't keep increasing.

r? kennytm
bors added a commit that referenced this pull request Apr 23, 2019
Disallow double trailing newlines in tidy

This wasn't done previously in #47064 (comment) as it affected too many files, but I think it's best to fix it now so that the number of files with double trailing newlines doesn't keep increasing.

r? kennytm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants