diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-11-24 21:34:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-11-24 21:34:32 +0000 |
commit | 7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2 (patch) | |
tree | aebaa3ee1ad8b28e68e68242bbc5ae4ae0c78185 | |
parent | 680f861d74f39bb29ad87346f764da7cc392c5aa (diff) | |
download | bcm5719-llvm-7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2.tar.gz bcm5719-llvm-7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2.zip |
"Do" loops cannot have condition variables, so don't parse them.
llvm-svn: 89801
-rw-r--r-- | clang/lib/Parse/ParseStmt.cpp | 7 | ||||
-rw-r--r-- | clang/test/SemaTemplate/instantiate-function-1.cpp | 3 |
2 files changed, 3 insertions, 7 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index 66e61dd949f..294f8729884 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -875,10 +875,9 @@ Parser::OwningStmtResult Parser::ParseDoStatement(AttributeList *Attr) { } // Parse the parenthesized condition. - OwningExprResult Cond(Actions); - SourceLocation LPLoc, RPLoc; - ParseParenExprOrCondition(Cond, true, &LPLoc, &RPLoc); - + SourceLocation LPLoc = ConsumeParen(); + OwningExprResult Cond = ParseExpression(); + SourceLocation RPLoc = MatchRHSPunctuation(tok::r_paren, LPLoc); DoScope.Exit(); if (Cond.isInvalid() || Body.isInvalid()) diff --git a/clang/test/SemaTemplate/instantiate-function-1.cpp b/clang/test/SemaTemplate/instantiate-function-1.cpp index 2749ec24401..a6c269febea 100644 --- a/clang/test/SemaTemplate/instantiate-function-1.cpp +++ b/clang/test/SemaTemplate/instantiate-function-1.cpp @@ -106,9 +106,6 @@ template<typename T> struct Do0 { void f(T t) { do { } while (t); // expected-error{{not contextually}} - - do { - } while (T t2 = T()); } }; |