Fix a silly bootstrap-breaking thinko, where we were trying to convert

non-existent condition expressions to boolean values during template
instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103364 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Douglas Gregor 2010-05-08 23:34:38 +00:00
Родитель 836fc14e6c
Коммит afa0fefb57
1 изменённых файлов: 28 добавлений и 20 удалений

Просмотреть файл

@ -3493,12 +3493,15 @@ TreeTransform<Derived>::TransformIfStmt(IfStmt *S) {
return SemaRef.StmtError();
// Convert the condition to a boolean value.
OwningExprResult CondE = getSema().ActOnBooleanCondition(0, S->getIfLoc(),
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
if (S->getCond()) {
OwningExprResult CondE = getSema().ActOnBooleanCondition(0,
S->getIfLoc(),
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
Cond = move(CondE);
Cond = move(CondE);
}
}
Sema::FullExprArg FullCond(getSema().MakeFullExpr(Cond));
@ -3584,14 +3587,16 @@ TreeTransform<Derived>::TransformWhileStmt(WhileStmt *S) {
if (Cond.isInvalid())
return SemaRef.StmtError();
// Convert the condition to a boolean value.
OwningExprResult CondE = getSema().ActOnBooleanCondition(0,
if (S->getCond()) {
// Convert the condition to a boolean value.
OwningExprResult CondE = getSema().ActOnBooleanCondition(0,
S->getWhileLoc(),
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
Cond = move(CondE);
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
Cond = move(CondE);
}
}
Sema::FullExprArg FullCond(getSema().MakeFullExpr(Cond));
@ -3660,14 +3665,17 @@ TreeTransform<Derived>::TransformForStmt(ForStmt *S) {
if (Cond.isInvalid())
return SemaRef.StmtError();
// Convert the condition to a boolean value.
OwningExprResult CondE = getSema().ActOnBooleanCondition(0, S->getForLoc(),
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
Cond = move(CondE);
if (S->getCond()) {
// Convert the condition to a boolean value.
OwningExprResult CondE = getSema().ActOnBooleanCondition(0,
S->getForLoc(),
move(Cond));
if (CondE.isInvalid())
return getSema().StmtError();
Cond = move(CondE);
}
}
Sema::FullExprArg FullCond(getSema().MakeFullExpr(Cond));