diff options
author | Martin Probst <martin@probst.io> | 2017-05-10 13:53:29 +0000 |
---|---|---|
committer | Martin Probst <martin@probst.io> | 2017-05-10 13:53:29 +0000 |
commit | b7fb267ed3033fff977b40553714defa1a0b57d1 (patch) | |
tree | f8021e3c2c308f648d09d6b3b47acd702545554c /clang/lib/Format/UnwrappedLineParser.cpp | |
parent | d399607f657cdeba5225371aafe9392a08ba75ec (diff) | |
download | bcm5719-llvm-b7fb267ed3033fff977b40553714defa1a0b57d1.tar.gz bcm5719-llvm-b7fb267ed3033fff977b40553714defa1a0b57d1.zip |
clang-format: refine calculating brace types.
Summary:
For C++ code, opening parenthesis following a } indicate a braced init. For JavaScript and other languages, this is an invalid syntactical construct, unless the closing parenthesis belongs to a function - in which situation its a BK_Block.
This fixes indenting IIFEs following top level functions:
function foo() {}
(function() { codeHere(); }());
clang-format used to collapse these lines together.
Subscribers: klimek
Differential Revision: https://reviews.llvm.org/D33006
llvm-svn: 302658
Diffstat (limited to 'clang/lib/Format/UnwrappedLineParser.cpp')
-rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 899da0f9892..c28565ddd73 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -368,9 +368,10 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) { (Style.Language == FormatStyle::LK_JavaScript && NextTok->isOneOf(Keywords.kw_of, Keywords.kw_in, Keywords.kw_as)) || + (Style.isCpp() && NextTok->is(tok::l_paren)) || NextTok->isOneOf(tok::comma, tok::period, tok::colon, tok::r_paren, tok::r_square, tok::l_brace, - tok::l_square, tok::l_paren, tok::ellipsis) || + tok::l_square, tok::ellipsis) || (NextTok->is(tok::identifier) && !PrevTok->isOneOf(tok::semi, tok::r_brace, tok::l_brace)) || (NextTok->is(tok::semi) && |