[cfe-commits] r79975 - in /cfe/trunk/lib: AST/DeclCXX.cpp Sema/Sema.h Sema/SemaDeclCXX.cpp Sema/SemaExprCXX.cpp Sema/SemaInit.cpp Sema/TreeTransform.h
Anders Carlsson
andersca at mac.com
Mon Aug 24 22:12:04 PDT 2009
Author: andersca
Date: Tue Aug 25 00:12:04 2009
New Revision: 79975
URL: http://llvm.org/viewvc/llvm-project?rev=79975&view=rev
Log:
BuildCXXConstructExpr now returns an OwningExprResult.
Modified:
cfe/trunk/lib/AST/DeclCXX.cpp
cfe/trunk/lib/Sema/Sema.h
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
cfe/trunk/lib/Sema/SemaExprCXX.cpp
cfe/trunk/lib/Sema/SemaInit.cpp
cfe/trunk/lib/Sema/TreeTransform.h
Modified: cfe/trunk/lib/AST/DeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp (original)
+++ cfe/trunk/lib/AST/DeclCXX.cpp Tue Aug 25 00:12:04 2009
@@ -454,7 +454,7 @@
// A default constructor for a class X is a constructor of class
// X that can be called without an argument.
return (getNumParams() == 0) ||
- (getNumParams() > 0 && getParamDecl(0)->getDefaultArg() != 0);
+ (getNumParams() > 0 && getParamDecl(0)->hasDefaultArg());
}
bool
Modified: cfe/trunk/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.h (original)
+++ cfe/trunk/lib/Sema/Sema.h Tue Aug 25 00:12:04 2009
@@ -1752,16 +1752,16 @@
QualType DeclInitType,
Expr **Exprs, unsigned NumExprs);
- Expr *BuildCXXConstructExpr(QualType DeclInitType,
- CXXConstructorDecl *Constructor,
- Expr **Exprs, unsigned NumExprs);
+ OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+ CXXConstructorDecl *Constructor,
+ Expr **Exprs, unsigned NumExprs);
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
/// including handling of its default argument expressions.
- Expr *BuildCXXConstructExpr(QualType DeclInitType,
- CXXConstructorDecl *Constructor,
- bool Elidable,
- Expr **Exprs, unsigned NumExprs);
+ OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+ CXXConstructorDecl *Constructor,
+ bool Elidable,
+ Expr **Exprs, unsigned NumExprs);
/// BuildCXXDefaultArgExpr - Creates a CXXDefaultArgExpr, instantiating
/// the default expr if needed.
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Tue Aug 25 00:12:04 2009
@@ -2407,9 +2407,10 @@
CopyConstructor->setUsed();
}
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
- CXXConstructorDecl *Constructor,
- Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType,
+ CXXConstructorDecl *Constructor,
+ Expr **Exprs, unsigned NumExprs) {
bool Elidable = false;
// [class.copy]p15:
@@ -2435,10 +2436,12 @@
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
/// including handling of its default argument expressions.
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
- CXXConstructorDecl *Constructor,
- bool Elidable,
- Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType,
+ CXXConstructorDecl *Constructor,
+ bool Elidable,
+ Expr **Exprs,
+ unsigned NumExprs) {
CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType,
Constructor,
Elidable, Exprs, NumExprs);
@@ -2461,15 +2464,18 @@
Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
Temp->setArg(j, Arg);
}
- return Temp;
+ return Owned(Temp);
}
void Sema::InitializeVarWithConstructor(VarDecl *VD,
CXXConstructorDecl *Constructor,
QualType DeclInitType,
Expr **Exprs, unsigned NumExprs) {
- Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor,
- Exprs, NumExprs);
+ OwningExprResult TempResult = BuildCXXConstructExpr(DeclInitType, Constructor,
+ Exprs, NumExprs);
+ assert(!TempResult.isInvalid() && "FIXME: Error handling");
+
+ Expr *Temp = TempResult.takeAs<Expr>();
MarkDeclarationReferenced(VD->getLocation(), Constructor);
Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);
VD->setInit(Context, Temp);
Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Tue Aug 25 00:12:04 2009
@@ -943,7 +943,13 @@
// FIXME: When can ToType be a reference type?
assert(!ToType->isReferenceType());
- From = BuildCXXConstructExpr(ToType, SCS.CopyConstructor, &From, 1);
+ OwningExprResult FromResult =
+ BuildCXXConstructExpr(ToType, SCS.CopyConstructor, &From, 1);
+
+ if (FromResult.isInvalid())
+ return true;
+
+ From = FromResult.takeAs<Expr>();
return false;
}
Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Tue Aug 25 00:12:04 2009
@@ -176,7 +176,13 @@
DirectInit? IK_Direct : IK_Copy);
if (!Constructor)
return true;
- Init = BuildCXXConstructExpr(DeclType, Constructor, &Init, 1);
+
+ OwningExprResult InitResult =
+ BuildCXXConstructExpr(DeclType, Constructor, &Init, 1);
+ if (InitResult.isInvalid())
+ return true;
+
+ Init = InitResult.takeAs<Expr>();
return false;
}
Modified: cfe/trunk/lib/Sema/TreeTransform.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=79975&r1=79974&r2=79975&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/TreeTransform.h (original)
+++ cfe/trunk/lib/Sema/TreeTransform.h Tue Aug 25 00:12:04 2009
@@ -1380,10 +1380,8 @@
MultiExprArg Args) {
unsigned NumArgs = Args.size();
Expr **ArgsExprs = (Expr **)Args.release();
- return getSema().Owned(SemaRef.BuildCXXConstructExpr(T, Constructor,
- IsElidable,
- ArgsExprs,
- NumArgs));
+ return getSema().BuildCXXConstructExpr(T, Constructor, IsElidable,
+ ArgsExprs, NumArgs);
}
/// \brief Build a new object-construction expression.
More information about the cfe-commits
mailing list