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