aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/UnwrappedLineParser.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-01-06 20:07:31 +0000
committerManuel Klimek <klimek@google.com>2013-01-06 20:07:31 +0000
commita5342db6fcc6ee3fae084f584ecb019726de9cca (patch)
treee28f4727b138527bca6a83505a47cbf4eb448c32 /lib/Format/UnwrappedLineParser.cpp
parent1834a048052e95195b71b6fa9189ecaf00e7d10d (diff)
Fixes handling of unbalances braces.
If we find an unexpected closing brace, we must not stop parsing, as we'd otherwise not layout anything beyond that point. If we find a structural error on the highest level we'll not re-indent anyway, but we'll still want to format within unwrapped lines. Needed to introduce a differentiation between an expected and unexpected closing brace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171666 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/UnwrappedLineParser.cpp')
-rw-r--r--lib/Format/UnwrappedLineParser.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp
index 72b47503ee..00710827c2 100644
--- a/lib/Format/UnwrappedLineParser.cpp
+++ b/lib/Format/UnwrappedLineParser.cpp
@@ -84,13 +84,13 @@ bool UnwrappedLineParser::parse() {
}
bool UnwrappedLineParser::parseFile() {
- bool Error = parseLevel();
+ bool Error = parseLevel(/*HasOpeningBrace=*/false);
// Make sure to format the remaining tokens.
addUnwrappedLine();
return Error;
}
-bool UnwrappedLineParser::parseLevel() {
+bool UnwrappedLineParser::parseLevel(bool HasOpeningBrace) {
bool Error = false;
do {
switch (FormatTok.Tok.getKind()) {
@@ -103,8 +103,15 @@ bool UnwrappedLineParser::parseLevel() {
addUnwrappedLine();
break;
case tok::r_brace:
- // Stray '}' is an error.
- return true;
+ if (HasOpeningBrace) {
+ return false;
+ } else {
+ // Stray '}' is an error.
+ Error = true;
+ nextToken();
+ addUnwrappedLine();
+ }
+ break;
default:
parseStatement();
break;
@@ -120,7 +127,7 @@ bool UnwrappedLineParser::parseBlock(unsigned AddLevels) {
addUnwrappedLine();
Line.Level += AddLevels;
- parseLevel();
+ parseLevel(/*HasOpeningBrace=*/true);
Line.Level -= AddLevels;
// FIXME: Add error handling.