r201504 - clang-format: Don't wrap "const" etc. of function declarations.
Daniel Jasper
djasper at google.com
Sun Feb 16 23:57:46 PST 2014
Author: djasper
Date: Mon Feb 17 01:57:46 2014
New Revision: 201504
URL: http://llvm.org/viewvc/llvm-project?rev=201504&view=rev
Log:
clang-format: Don't wrap "const" etc. of function declarations.
Generally people seem to prefer wrapping the first function parameter
over wrapping the trailing tokens "const", "override" and "final". This
does not extend to function-like annotations and probably not to other
non-standard annotations.
Before:
void someLongFunction(int SomeLongParameter)
const { ... }
After:
void someLongFunction(
int SomeLongParameter) const { ... }
Modified:
cfe/trunk/lib/Format/TokenAnnotator.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=201504&r1=201503&r2=201504&view=diff
==============================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp Mon Feb 17 01:57:46 2014
@@ -1212,10 +1212,16 @@ unsigned TokenAnnotator::splitPenalty(co
if (Right.Type == TT_TrailingAnnotation && Right.Next &&
Right.Next->isNot(tok::l_paren)) {
- // Breaking before a trailing annotation is bad unless it is function-like.
+ // Generally, breaking before a trailing annotation is bad unless it is
+ // function-like. It seems to be especially preferable to keep standard
+ // 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.
- return Left.is(tok::r_paren) ? 100 : 120;
+ bool is_standard_annotation = Right.is(tok::kw_const) ||
+ Right.TokenText == "override" ||
+ Right.TokenText == "final";
+ return (Left.is(tok::r_paren) ? 100 : 120) +
+ (is_standard_annotation ? 50 : 0);
}
// In for-loops, prefer breaking at ',' and ';'.
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=201504&r1=201503&r2=201504&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Feb 17 01:57:46 2014
@@ -3141,13 +3141,24 @@ TEST_F(FormatTest, BreaksFunctionDeclara
"virtual void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()\n"
" const override;");
- // Unless this would lead to the first parameter being broken.
- verifyFormat("void someLongFunction(int someLongParameter)\n"
- " const {}",
+ // Even if the first parameter has to be wrapped.
+ verifyFormat("void someLongFunction(\n"
+ " int someLongParameter) const {}",
getLLVMStyleWithColumns(46));
- verifyFormat("void someLongFunction(int someLongParameter)\n"
- " const {}",
+ verifyFormat("void someLongFunction(\n"
+ " int someLongParameter) const {}",
Style);
+ verifyFormat("void someLongFunction(\n"
+ " int someLongParameter) override {}",
+ Style);
+ verifyFormat("void someLongFunction(\n"
+ " int someLongParameter) final {}",
+ Style);
+ verifyFormat("void someLongFunction(\n"
+ " int parameter) const override {}",
+ Style);
+
+ // Unless these are unknown annotations.
verifyFormat("void SomeFunction(aaaaaaaaaa aaaaaaaaaaaaaaa,\n"
" aaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
" LONG_AND_UGLY_ANNOTATION;");
More information about the cfe-commits
mailing list