forked from OSchip/llvm-project
[clang-format] Fix regression about short functions after #else
Summary: This patch fixes a regression introduced in r312904, where the formatter confuses the `else` in `#else` with an `else` of an `if-else` statement. For example, formatting this code with google style ``` #ifdef A int f() {} #else int f() {} #endif ``` resulted in ``` #ifdef A int f() {} #else int f() { } #endif ``` Reviewers: sammccall Reviewed By: sammccall Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D37973 llvm-svn: 314683
This commit is contained in:
parent
65bde8806f
commit
6a1c9d51fa
|
@ -466,8 +466,7 @@ private:
|
|||
// Check that the current line allows merging. This depends on whether we
|
||||
// are in a control flow statements as well as several style flags.
|
||||
if (Line.First->isOneOf(tok::kw_else, tok::kw_case) ||
|
||||
(Line.First->Next && Line.First->Next->is(tok::kw_else)) ||
|
||||
(I != AnnotatedLines.begin() && I[-1]->Last->is(tok::kw_else)))
|
||||
(Line.First->Next && Line.First->Next->is(tok::kw_else)))
|
||||
return 0;
|
||||
if (Line.First->isOneOf(tok::kw_if, tok::kw_while, tok::kw_do, tok::kw_try,
|
||||
tok::kw___try, tok::kw_catch, tok::kw___finally,
|
||||
|
|
|
@ -7102,6 +7102,16 @@ TEST_F(FormatTest, SplitEmptyFunction) {
|
|||
"}",
|
||||
Style);
|
||||
}
|
||||
TEST_F(FormatTest, KeepShortFunctionAfterPPElse) {
|
||||
FormatStyle Style = getLLVMStyle();
|
||||
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All;
|
||||
verifyFormat("#ifdef A\n"
|
||||
"int f() {}\n"
|
||||
"#else\n"
|
||||
"int g() {}\n"
|
||||
"#endif",
|
||||
Style);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, SplitEmptyClass) {
|
||||
FormatStyle Style = getLLVMStyle();
|
||||
|
|
Loading…
Reference in New Issue