r226449 - clang-format: Fix clang-format crash on invalid code.
Daniel Jasper
djasper at google.com
Mon Jan 19 02:51:23 PST 2015
Author: djasper
Date: Mon Jan 19 04:51:23 2015
New Revision: 226449
URL: http://llvm.org/viewvc/llvm-project?rev=226449&view=rev
Log:
clang-format: Fix clang-format crash on invalid code.
Modified:
cfe/trunk/lib/Format/ContinuationIndenter.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/ContinuationIndenter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.cpp?rev=226449&r1=226448&r2=226449&view=diff
==============================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.cpp (original)
+++ cfe/trunk/lib/Format/ContinuationIndenter.cpp Mon Jan 19 04:51:23 2015
@@ -516,7 +516,7 @@ unsigned ContinuationIndenter::getNewLin
if (NextNonComment->is(tok::l_brace) && NextNonComment->BlockKind == BK_Block)
return Current.NestingLevel == 0 ? State.FirstIndent
: State.Stack.back().Indent;
- if (Current.isOneOf(tok::r_brace, tok::r_square)) {
+ if (Current.isOneOf(tok::r_brace, tok::r_square) && State.Stack.size() > 1) {
if (Current.closesBlockTypeList(Style))
return State.Stack[State.Stack.size() - 2].NestedBlockIndent;
if (Current.MatchingParen &&
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=226449&r1=226448&r2=226449&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Jan 19 04:51:23 2015
@@ -67,6 +67,12 @@ protected:
verifyFormat(llvm::Twine("void f() { " + text + " }").str());
}
+ /// \brief Verify that clang-format does not crash on the given input.
+ void verifyNoCrash(llvm::StringRef Code,
+ const FormatStyle &Style = getLLVMStyle()) {
+ format(Code, Style);
+ }
+
int ReplacementCount;
};
@@ -5622,6 +5628,8 @@ TEST_F(FormatTest, FormatsArrays) {
"aaaaaaaaaaa aaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaa->aaaaaaaaa[0]\n"
" .aaaaaaa[0]\n"
" .aaaaaaaaaaaaaaaaaaaaaa();");
+
+ verifyNoCrash("a[,Y?)]", getLLVMStyleWithColumns(10));
}
TEST_F(FormatTest, LineStartsWithSpecialCharacter) {
More information about the cfe-commits
mailing list