mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-10-10 21:04:56 +00:00
[clang-format] BreakAfterReturnType ignored on functions with numeric template parameters
Summary: Addresses PR40696 - https://bugs.llvm.org/show_bug.cgi?id=40696 The BreakAfterReturnType didn't work if it had a single arguments which was a template with an integer template parameter ``` int foo(A<8> a) { return a; } ``` When run with the Mozilla style. would not break after the `int` ``` int TestFn(A<8> a) { return a; } ``` This revision resolves this issue by allowing numeric constants to be considered function parameters if if seen inside `<>` Reviewers: djasper, klimek, JonasToth, krasimir, reuk, alexfh Reviewed By: klimek Subscribers: cfe-commits, llvm-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D59309 llvm-svn: 357837
This commit is contained in:
parent
5182302a37
commit
1db96ac88b
@ -2095,7 +2095,7 @@ static bool isFunctionDeclarationName(const FormatToken &Current,
|
||||
return true;
|
||||
for (const FormatToken *Tok = Next->Next; Tok && Tok != Next->MatchingParen;
|
||||
Tok = Tok->Next) {
|
||||
if (Tok->is(tok::l_paren) && Tok->MatchingParen) {
|
||||
if (Tok->isOneOf(tok::l_paren, TT_TemplateOpener) && Tok->MatchingParen) {
|
||||
Tok = Tok->MatchingParen;
|
||||
continue;
|
||||
}
|
||||
|
@ -5709,6 +5709,42 @@ TEST_F(FormatTest, ReturnTypeBreakingStyle) {
|
||||
"}\n"
|
||||
"template <class T> T *f(T &c);\n", // No break here.
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<bool> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<8> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<B<bool>, 8> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<B<8>, bool> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<B<bool>, bool> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
verifyFormat("int\n"
|
||||
"foo(A<B<8>, 8> a)\n"
|
||||
"{\n"
|
||||
" return a;\n"
|
||||
"}\n",
|
||||
Style);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, AlwaysBreakBeforeMultilineStrings) {
|
||||
|
Loading…
Reference in New Issue
Block a user