Convert selected expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60900 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp
index 8dd2f51..6c13e5c 100644
--- a/lib/Parse/ParseExprCXX.cpp
+++ b/lib/Parse/ParseExprCXX.cpp
@@ -310,7 +310,7 @@
     return Actions.ActOnCXXThrow(ThrowLoc);
 
   default:
-    OwningExprResult Expr(Actions, ParseAssignmentExpression());
+    OwningExprResult Expr(ParseAssignmentExpression());
     if (Expr.isInvalid()) return Expr.result();
     return Actions.ActOnCXXThrow(ThrowLoc, Expr.release());
   }
@@ -372,7 +372,7 @@
 /// [GNU]   type-specifier-seq declarator simple-asm-expr[opt] attributes[opt]
 ///             '=' assignment-expression
 ///
-Parser::ExprResult Parser::ParseCXXCondition() {
+Parser::OwningExprResult Parser::ParseCXXCondition() {
   if (!isCXXConditionDeclaration())
     return ParseExpression(); // expression
 
@@ -391,7 +391,7 @@
     OwningExprResult AsmLabel(ParseSimpleAsm());
     if (AsmLabel.isInvalid()) {
       SkipUntil(tok::semi);
-      return true;
+      return ExprError();
     }
     DeclaratorInfo.setAsmLabel(AsmLabel.release());
   }
@@ -402,15 +402,15 @@
 
   // '=' assignment-expression
   if (Tok.isNot(tok::equal))
-    return Diag(Tok, diag::err_expected_equal_after_declarator);
+    return ExprError(Diag(Tok, diag::err_expected_equal_after_declarator));
   SourceLocation EqualLoc = ConsumeToken();
-  OwningExprResult AssignExpr(Actions, ParseAssignmentExpression());
+  OwningExprResult AssignExpr(ParseAssignmentExpression());
   if (AssignExpr.isInvalid())
-    return true;
-  
-  return Actions.ActOnCXXConditionDeclarationExpr(CurScope, StartLoc,
-                                                  DeclaratorInfo, EqualLoc,
-                                                  AssignExpr.release());
+    return ExprError();
+
+  return Owned(Actions.ActOnCXXConditionDeclarationExpr(CurScope, StartLoc,
+                                                        DeclaratorInfo,EqualLoc,
+                                                        AssignExpr.release()));
 }
 
 /// ParseCXXSimpleTypeSpecifier - [C++ 7.1.5.2] Simple type specifiers.
@@ -776,8 +776,8 @@
   bool first = true;
   while (Tok.is(tok::l_square)) {
     SourceLocation LLoc = ConsumeBracket();
-    OwningExprResult Size(Actions, first ? ParseExpression()
-                                         : ParseConstantExpression());
+    OwningExprResult Size(first ? ParseExpression()
+                                : ParseConstantExpression());
     if (Size.isInvalid()) {
       // Recover
       SkipUntil(tok::r_square);
@@ -851,7 +851,7 @@
       return true;
   }
 
-  OwningExprResult Operand(Actions, ParseCastExpression(false));
+  OwningExprResult Operand(ParseCastExpression(false));
   if (Operand.isInvalid())
     return Operand.result();