forked from OSchip/llvm-project
Fix clang-format's expression parser for leading }s.
The leading "}" in the construct "} else if (..) {" was confusing the
expression parser. Thus, no fake parentheses were generated and the
indentation was broken in some cases.
llvm-svn: 183393
This commit is contained in:
parent
c87e009059
commit
6dcecb6b33
|
|
@ -773,7 +773,11 @@ private:
|
||||||
/// operator precedence.
|
/// operator precedence.
|
||||||
class ExpressionParser {
|
class ExpressionParser {
|
||||||
public:
|
public:
|
||||||
ExpressionParser(AnnotatedLine &Line) : Current(Line.First) {}
|
ExpressionParser(AnnotatedLine &Line) : Current(Line.First) {
|
||||||
|
// Skip leading "}", e.g. in "} else if (...) {".
|
||||||
|
if (Current->is(tok::r_brace))
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
/// \brief Parse expressions with the given operatore precedence.
|
/// \brief Parse expressions with the given operatore precedence.
|
||||||
void parse(int Precedence = 0) {
|
void parse(int Precedence = 0) {
|
||||||
|
|
|
||||||
|
|
@ -2073,6 +2073,10 @@ TEST_F(FormatTest, ExpressionIndentation) {
|
||||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
|
||||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
|
||||||
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
|
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
|
||||||
|
verifyFormat("if () {\n"
|
||||||
|
"} else if (aaaaa && bbbbb > // break\n"
|
||||||
|
" ccccc) {\n"
|
||||||
|
"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FormatTest, ConstructorInitializers) {
|
TEST_F(FormatTest, ConstructorInitializers) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue