summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-12-14 16:27:04 +0000
committerDouglas Gregor <dgregor@apple.com>2009-12-14 16:27:04 +0000
commitdb121bad2aeccac3f0e504b79e527efecef98a91 (patch)
treedcde8b68d5deebecf97cc98533738c49dfa67445 /clang/lib/Sema/TreeTransform.h
parent525dda05a0dfdfdb3ffce086bf8b3156b72dae21 (diff)
downloadbcm5719-llvm-db121bad2aeccac3f0e504b79e527efecef98a91.tar.gz
bcm5719-llvm-db121bad2aeccac3f0e504b79e527efecef98a91.zip
When rebuilding CXXConstructExprs after a transformation, use
CompleteConstructorCall to perform type-checking. llvm-svn: 91279
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r--clang/lib/Sema/TreeTransform.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index dc848a53ab5..b1d7f064894 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -1459,13 +1459,17 @@ public:
/// By default, performs semantic analysis to build the new expression.
/// Subclasses may override this routine to provide different behavior.
OwningExprResult RebuildCXXConstructExpr(QualType T,
+ SourceLocation Loc,
CXXConstructorDecl *Constructor,
bool IsElidable,
MultiExprArg Args) {
- return getSema().BuildCXXConstructExpr(/*FIXME:ConstructLoc*/
- SourceLocation(),
- T, Constructor, IsElidable,
- move(Args));
+ ASTOwningVector<&ActionBase::DeleteExpr> ConvertedArgs(SemaRef);
+ if (getSema().CompleteConstructorCall(Constructor, move(Args), Loc,
+ ConvertedArgs))
+ return getSema().ExprError();
+
+ return getSema().BuildCXXConstructExpr(Loc, T, Constructor, IsElidable,
+ move_arg(ConvertedArgs));
}
/// \brief Build a new object-construction expression.
@@ -4723,7 +4727,8 @@ TreeTransform<Derived>::TransformCXXConstructExpr(CXXConstructExpr *E) {
!ArgumentChanged)
return SemaRef.Owned(E->Retain());
- return getDerived().RebuildCXXConstructExpr(T, Constructor, E->isElidable(),
+ return getDerived().RebuildCXXConstructExpr(T, /*FIXME:*/E->getLocStart(),
+ Constructor, E->isElidable(),
move_arg(Args));
}
OpenPOWER on IntegriCloud