Author: alexfh Date: Tue Dec 4 09:40:36 2012 New Revision: 169278 URL: http://llvm.org/viewvc/llvm-project?rev=169278&view=rev Log: Clang-format error recovery part 1
Reviewers: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D163 Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp cfe/trunk/unittests/Format/FormatTest.cpp Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=169278&r1=169277&r2=169278&view=diff ============================================================================== --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original) +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Tue Dec 4 09:40:36 2012 @@ -72,7 +72,10 @@ parseLevel(); if (!IsNamespace) --Line.Level; - assert(FormatTok.Tok.is(tok::r_brace) && "expected '}'"); + // FIXME: Add error handling. + if (!FormatTok.Tok.is(tok::r_brace)) + return; + nextToken(); if (FormatTok.Tok.is(tok::semi)) nextToken(); @@ -218,7 +221,12 @@ --Line.Level; } - assert(FormatTok.Tok.is(tok::kw_while) && "'while' expected"); + // FIXME: Add error handling. + if (!FormatTok.Tok.is(tok::kw_while)) { + addUnwrappedLine(); + return; + } + nextToken(); parseStatement(); } Modified: cfe/trunk/unittests/Format/FormatTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=169278&r1=169277&r2=169278&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTest.cpp (original) +++ cfe/trunk/unittests/Format/FormatTest.cpp Tue Dec 4 09:40:36 2012 @@ -363,5 +363,23 @@ // "};"); //} +TEST_F(FormatTest, IncorrectCodeUnbalancedBraces) { + verifyFormat("{"); +} + +TEST_F(FormatTest, IncorrectCodeDoNoWhile) { + verifyFormat("do {\n" + "};"); + verifyFormat("do {\n" + "};\n" + "f();"); + verifyFormat("do {\n" + "}\n" + "wheeee(fun);"); + verifyFormat("do {\n" + " f();\n" + "};"); +} + } // end namespace tooling } // end namespace clang _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
