[cfe-commits] r56096 - in /cfe/trunk: lib/Sema/SemaStmt.cpp test/SemaCXX/condition.cpp

Argiris Kirtzidis akyrtzi at gmail.com
Thu Sep 11 12:09:35 PDT 2008


CheckCXXBooleanCondition follows the convention of other check functions 
(CheckInitializerTypes, CheckSingleInitializer, CheckCastTypes, etc) 
which is that it doesn't just receive the expression to check, but a 
reference to it so that it can replace it with another expression as 
needed. It replaces the given Expr node with an implicit cast expr node, 
and returns false if it was successful. If it can't convert to bool and 
a diagnostic was emitted, it returns true (works similar to the other 
check functions).

-Argiris

Neil Booth wrote:
> Argiris Kirtzidis wrote:-
>
>   
>> Author: akirtzidis
>> Date: Thu Sep 11 00:16:22 2008
>> New Revision: 56096
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=56096&view=rev
>> Log:
>> Do implicit conversion to bool for the condition in a do-while statement.
>>
>> Modified:
>>     cfe/trunk/lib/Sema/SemaStmt.cpp
>>     cfe/trunk/test/SemaCXX/condition.cpp
>>
>> Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=56096&r1=56095&r2=56096&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaStmt.cpp Thu Sep 11 00:16:22 2008
>> @@ -530,7 +530,10 @@
>>    DefaultFunctionArrayConversion(condExpr);
>>    QualType condType = condExpr->getType();
>>    
>> -  if (!condType->isScalarType()) // C99 6.8.5p2
>> +  if (getLangOptions().CPlusPlus) {
>> +    if (CheckCXXBooleanCondition(condExpr)) // C++ 6.4p4
>> +      return true;
>> +  } else if (!condType->isScalarType()) // C99 6.8.5p2
>>      return Diag(DoLoc, diag::err_typecheck_statement_requires_scalar,
>>               condType.getAsString(), condExpr->getSourceRange());
>>     
>
> Isn't this just checking the conversion is OK, but not doing it?
>
> Neil.
>
>   



More information about the cfe-commits mailing list