diff options
-rw-r--r-- | lib/Parse/Parser.cpp | 11 | ||||
-rw-r--r-- | test/Parser/bracket-crash.cpp | 6 |
2 files changed, 7 insertions, 10 deletions
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp index def2ca4088..02fac16905 100644 --- a/lib/Parse/Parser.cpp +++ b/lib/Parse/Parser.cpp @@ -127,16 +127,7 @@ SourceLocation Parser::MatchRHSPunctuation(tok::TokenKind RHSTok, } Diag(Tok, DID); Diag(LHSLoc, diag::note_matching) << LHSName; - if (!SkipUntil(RHSTok)) { - // We stopped before finding a RHS token, e.g. we encountered a ';'. - // Balance Paren/Brace/Bracket counting. - switch (RHSTok) { - default: break; - case tok::r_paren : assert(ParenCount > 0); --ParenCount; break; - case tok::r_brace : assert(BraceCount > 0); --BraceCount; break; - case tok::r_square: assert(BracketCount > 0); --BracketCount; break; - } - } + SkipUntil(RHSTok); return R; } diff --git a/test/Parser/bracket-crash.cpp b/test/Parser/bracket-crash.cpp new file mode 100644 index 0000000000..fd18e0e25f --- /dev/null +++ b/test/Parser/bracket-crash.cpp @@ -0,0 +1,6 @@ +// RUN: not %clang_cc1 -fsyntax-only %s +// PR7481 +struct{ + a +} + |