r198770 - clang-format: Don't hang forever when encountering a stray "}" in an @implementation block.
Benjamin Kramer
benny.kra at googlemail.com
Wed Jan 8 07:59:43 PST 2014
Author: d0k
Date: Wed Jan 8 09:59:42 2014
New Revision: 198770
URL: http://llvm.org/viewvc/llvm-project?rev=198770&view=rev
Log:
clang-format: Don't hang forever when encountering a stray "}" in an @implementation block.
PR18406.
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=198770&r1=198769&r2=198770&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Wed Jan 8 09:59:42 2014
@@ -1255,6 +1255,10 @@ void UnwrappedLineParser::parseObjCUntil
parseBlock(/*MustBeDeclaration=*/false);
// In ObjC interfaces, nothing should be following the "}".
addUnwrappedLine();
+ } else if (FormatTok->is(tok::r_brace)) {
+ // Ignore stray "}". parseStructuralElement doesn't consume them.
+ nextToken();
+ addUnwrappedLine();
} else {
parseStructuralElement();
}
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=198770&r1=198769&r2=198770&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Jan 8 09:59:42 2014
@@ -5596,6 +5596,10 @@ TEST_F(FormatTest, FormatObjCProtocol) {
" int *looooooooooooooooooooooooooooongNumber;\n"
"@property(nonatomic, assign, readonly)\n"
" NSString *looooooooooooooooooooooooooooongName;");
+
+ verifyFormat("@implementation PR18406\n"
+ "}\n"
+ "@end");
}
TEST_F(FormatTest, FormatObjCMethodDeclarations) {
More information about the cfe-commits
mailing list