parent
b752f1e25c
commit
1b6d10555f
|
@ -3745,19 +3745,28 @@ void Sema::ActOnUninitializedDecl(DeclPtrTy dcl,
|
||||||
InitType->isRecordType() && !InitType->isDependentType()) {
|
InitType->isRecordType() && !InitType->isDependentType()) {
|
||||||
if (!RequireCompleteType(Var->getLocation(), InitType,
|
if (!RequireCompleteType(Var->getLocation(), InitType,
|
||||||
diag::err_invalid_incomplete_type_use)) {
|
diag::err_invalid_incomplete_type_use)) {
|
||||||
InitializedEntity Entity
|
ASTOwningVector<&ActionBase::DeleteExpr> ConstructorArgs(*this);
|
||||||
= InitializedEntity::InitializeVariable(Var);
|
|
||||||
InitializationKind Kind
|
|
||||||
= InitializationKind::CreateDefault(Var->getLocation());
|
|
||||||
|
|
||||||
InitializationSequence InitSeq(*this, Entity, Kind, 0, 0);
|
CXXConstructorDecl *Constructor
|
||||||
OwningExprResult Init = InitSeq.Perform(*this, Entity, Kind,
|
= PerformInitializationByConstructor(InitType,
|
||||||
MultiExprArg(*this, 0, 0));
|
MultiExprArg(*this, 0, 0),
|
||||||
if (Init.isInvalid())
|
Var->getLocation(),
|
||||||
|
SourceRange(Var->getLocation(),
|
||||||
|
Var->getLocation()),
|
||||||
|
Var->getDeclName(),
|
||||||
|
InitializationKind::CreateDefault(Var->getLocation()),
|
||||||
|
ConstructorArgs);
|
||||||
|
|
||||||
|
// FIXME: Location info for the variable initialization?
|
||||||
|
if (!Constructor)
|
||||||
Var->setInvalidDecl();
|
Var->setInvalidDecl();
|
||||||
else {
|
else {
|
||||||
Var->setInit(Context,
|
// FIXME: Cope with initialization of arrays
|
||||||
MaybeCreateCXXExprWithTemporaries(Init.takeAs<Expr>()));
|
if (!Constructor->isTrivial() &&
|
||||||
|
InitializeVarWithConstructor(Var, Constructor,
|
||||||
|
move_arg(ConstructorArgs)))
|
||||||
|
Var->setInvalidDecl();
|
||||||
|
|
||||||
FinalizeVarWithDestructor(Var, InitType);
|
FinalizeVarWithDestructor(Var, InitType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue