r225615 - Parse: Don't let BalancedDelimiterTracker consume cxx_defaultarg_end
David Majnemer
david.majnemer at gmail.com
Sun Jan 11 19:14:18 PST 2015
Author: majnemer
Date: Sun Jan 11 21:14:18 2015
New Revision: 225615
URL: http://llvm.org/viewvc/llvm-project?rev=225615&view=rev
Log:
Parse: Don't let BalancedDelimiterTracker consume cxx_defaultarg_end
It is not correct to let it consume the cxx_defaultarg_end token. I'm
starting to wonder if it makes more sense to stop SkipUntil from
consuming such tokens.
Modified:
cfe/trunk/lib/Parse/Parser.cpp
cfe/trunk/test/Parser/cxx0x-lambda-expressions.cpp
Modified: cfe/trunk/lib/Parse/Parser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=225615&r1=225614&r2=225615&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/Parser.cpp (original)
+++ cfe/trunk/lib/Parse/Parser.cpp Sun Jan 11 21:14:18 2015
@@ -1948,7 +1948,7 @@ bool BalancedDelimiterTracker::diagnoseM
// token.
if (P.Tok.isNot(tok::r_paren) && P.Tok.isNot(tok::r_brace) &&
P.Tok.isNot(tok::r_square) &&
- P.SkipUntil(Close, FinalToken,
+ P.SkipUntil(Close, FinalToken, tok::cxx_defaultarg_end,
Parser::StopAtSemi | Parser::StopBeforeMatch) &&
P.Tok.is(Close))
LClose = P.ConsumeAnyToken();
Modified: cfe/trunk/test/Parser/cxx0x-lambda-expressions.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/cxx0x-lambda-expressions.cpp?rev=225615&r1=225614&r2=225615&view=diff
==============================================================================
--- cfe/trunk/test/Parser/cxx0x-lambda-expressions.cpp (original)
+++ cfe/trunk/test/Parser/cxx0x-lambda-expressions.cpp Sun Jan 11 21:14:18 2015
@@ -103,3 +103,8 @@ struct S {
template <typename T>
void m (T x =[0); // expected-error{{expected variable name or 'this' in lambda capture list}}
} s;
+
+struct U {
+ template <typename T>
+ void m_fn1(T x = 0[0); // expected-error{{expected ']'}} expected-note{{to match this '['}}
+} *U;
More information about the cfe-commits
mailing list