From b48d3afcd53e16712f55836a81f08a1d65953540 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 9 Apr 2014 10:01:49 +0000 Subject: [PATCH] clang-format: Keep more trailing annotations on the same line. More precisely keep all short annotations (<10 characters) on the same line if possible. Previously, clang-format would only prefer to do so for "const", "override" and "final". However, it seems to be generally preferable, especially because some codebases have to wrap those in macros for backwards compatibility. Before: void someLongFunction(int someLongParameter) OVERRIDE {} After: void someLongFunction( int someLongParameter) OVERRIDE {} This fixes llvm.org/PR19363. llvm-svn: 205845 --- clang/lib/Format/TokenAnnotator.cpp | 6 ++---- clang/unittests/Format/FormatTest.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 03921b04b1e6..cd05a6807e61 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1279,11 +1279,9 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, // annotations (i.e. "const", "final" and "override") on the same line. // Use a slightly higher penalty after ")" so that annotations like // "const override" are kept together. - bool is_standard_annotation = Right.is(tok::kw_const) || - Right.TokenText == "override" || - Right.TokenText == "final"; + bool is_short_annotation = Right.TokenText.size() < 10; return (Left.is(tok::r_paren) ? 100 : 120) + - (is_standard_annotation ? 50 : 0); + (is_short_annotation ? 50 : 0); } // In for-loops, prefer breaking at ',' and ';'. diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 5adc0d5725b4..e3da016663c7 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -3269,9 +3269,15 @@ TEST_F(FormatTest, BreaksFunctionDeclarationsWithTrailingTokens) { verifyFormat("void someLongFunction(\n" " int someLongParameter) override {}", Style); + verifyFormat("void someLongFunction(\n" + " int someLongParameter) OVERRIDE {}", + Style); verifyFormat("void someLongFunction(\n" " int someLongParameter) final {}", Style); + verifyFormat("void someLongFunction(\n" + " int someLongParameter) FINAL {}", + Style); verifyFormat("void someLongFunction(\n" " int parameter) const override {}", Style);