[PATCH] D60363: [clang-format] [PR41170] Break after return type ignored with certain comments positions
Phabricator via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 15 00:45:44 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL358375: [clang-format] [PR41170] Break after return type ignored with certain comments… (authored by paulhoad, committed by ).
Herald added a project: LLVM.
Changed prior to commit:
https://reviews.llvm.org/D60363?vs=195057&id=195099#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D60363/new/
https://reviews.llvm.org/D60363
Files:
cfe/trunk/lib/Format/TokenAnnotator.h
cfe/trunk/unittests/Format/FormatTest.cpp
Index: cfe/trunk/lib/Format/TokenAnnotator.h
===================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.h
+++ cfe/trunk/lib/Format/TokenAnnotator.h
@@ -99,9 +99,17 @@
/// function declaration. Asserts MightBeFunctionDecl.
bool mightBeFunctionDefinition() const {
assert(MightBeFunctionDecl);
- // FIXME: Line.Last points to other characters than tok::semi
- // and tok::lbrace.
- return !Last->isOneOf(tok::semi, tok::comment);
+ // Try to determine if the end of a stream of tokens is either the
+ // Definition or the Declaration for a function. It does this by looking for
+ // the ';' in foo(); and using that it ends with a ; to know this is the
+ // Definition, however the line could end with
+ // foo(); /* comment */
+ // or
+ // foo(); // comment
+ // or
+ // foo() // comment
+ // endsWith() ignores the comment.
+ return !endsWith(tok::semi);
}
/// \c true if this line starts a namespace definition.
Index: cfe/trunk/unittests/Format/FormatTest.cpp
===================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp
+++ cfe/trunk/unittests/Format/FormatTest.cpp
@@ -5768,6 +5768,26 @@
" return a;\n"
"}\n",
Style);
+
+ Style = getGNUStyle();
+
+ // Test for comments at the end of function declarations.
+ verifyFormat("void\n"
+ "foo (int a, /*abc*/ int b) // def\n"
+ "{\n"
+ "}\n",
+ Style);
+
+ verifyFormat("void\n"
+ "foo (int a, /* abc */ int b) /* def */\n"
+ "{\n"
+ "}\n",
+ Style);
+
+ // Definitions that should not break after return type
+ verifyFormat("void foo (int a, int b); // def\n", Style);
+ verifyFormat("void foo (int a, int b); /* def */\n", Style);
+ verifyFormat("void foo (int a, int b);\n", Style);
}
TEST_F(FormatTest, AlwaysBreakBeforeMultilineStrings) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60363.195099.patch
Type: text/x-patch
Size: 2038 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190415/f5b39dc5/attachment-0001.bin>
More information about the cfe-commits
mailing list