BuildCXXConstructExpr doesn't need to take an ASTContext.

llvm-svn: 79149
This commit is contained in:
Anders Carlsson
2009-08-15 23:41:35 +00:00
parent ea56303b09
commit f86a8d1030
5 changed files with 17 additions and 17 deletions

View File

@@ -1692,12 +1692,13 @@ public:
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
/// including handling of its default argument expressions.
Expr * BuildCXXConstructExpr(ASTContext &C,
QualType DeclInitType,
CXXConstructorDecl *Constructor,
bool Elidable,
Expr **Exprs, unsigned NumExprs);
Expr *BuildCXXConstructExpr(QualType DeclInitType,
CXXConstructorDecl *Constructor,
bool Elidable,
Expr **Exprs, unsigned NumExprs);
Expr *BuildCXXCopyConstructExpr(Expr *Expr);
/// FinalizeVarWithDestructor - Prepare for calling destructor on the
/// constructed variable.
void FinalizeVarWithDestructor(VarDecl *VD, QualType DeclInitType);

View File

@@ -2379,12 +2379,11 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation,
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
/// including handling of its default argument expressions.
Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
QualType DeclInitType,
Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
CXXConstructorDecl *Constructor,
bool Elidable,
Expr **Exprs, unsigned NumExprs) {
CXXConstructExpr *Temp = CXXConstructExpr::Create(C, DeclInitType,
CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType,
Constructor,
Elidable, Exprs, NumExprs);
// default arguments must be added to constructor call expression.
@@ -2403,7 +2402,7 @@ Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
for (unsigned I = 0, N = E->getNumTemporaries(); I != N; ++I)
ExprTemporaries.push_back(E->getTemporary(I));
}
Expr *Arg = CXXDefaultArgExpr::Create(C, FDecl->getParamDecl(j));
Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
Temp->setArg(j, Arg);
}
return Temp;
@@ -2413,8 +2412,7 @@ void Sema::InitializeVarWithConstructor(VarDecl *VD,
CXXConstructorDecl *Constructor,
QualType DeclInitType,
Expr **Exprs, unsigned NumExprs) {
Expr *Temp = BuildCXXConstructExpr(Context,
DeclInitType, Constructor,
Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor,
false, Exprs, NumExprs);
MarkDeclarationReferenced(VD->getLocation(), Constructor);
Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);

View File

@@ -905,8 +905,8 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
// FIXME: Keep track of whether the copy constructor is elidable or not.
bool Elidable = (isa<CallExpr>(From) ||
isa<CXXTemporaryObjectExpr>(From));
From = BuildCXXConstructExpr(Context, ToType,
SCS.CopyConstructor, Elidable, &From, 1);
From = BuildCXXConstructExpr(ToType, SCS.CopyConstructor,
Elidable, &From, 1);
return false;
}
@@ -1558,6 +1558,9 @@ QualType Sema::FindCompositePointerType(Expr *&E1, Expr *&E2) {
}
Sema::OwningExprResult Sema::MaybeBindToTemporary(Expr *E) {
if (!Context.getLangOptions().CPlusPlus)
return Owned(E);
const RecordType *RT = E->getType()->getAs<RecordType>();
if (!RT)
return Owned(E);

View File

@@ -178,8 +178,7 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType,
return true;
bool Elidable = (isa<CallExpr>(Init) ||
isa<CXXTemporaryObjectExpr>(Init));
Init = BuildCXXConstructExpr(Context,
DeclType, Constructor, Elidable, &Init, 1);
Init = BuildCXXConstructExpr(DeclType, Constructor, Elidable, &Init, 1);
Init = MaybeCreateCXXExprWithTemporaries(Init, /*DestroyTemps=*/true);
return false;
}

View File

@@ -1173,8 +1173,7 @@ public:
MultiExprArg Args) {
unsigned NumArgs = Args.size();
Expr **ArgsExprs = (Expr **)Args.release();
return getSema().Owned(SemaRef.BuildCXXConstructExpr(getSema().Context, T,
Constructor,
return getSema().Owned(SemaRef.BuildCXXConstructExpr(T, Constructor,
IsElidable,
ArgsExprs,
NumArgs));