r185056 - Fix a conversion to incomplete type bug -- The error message now specifically states that the type is incomplete and points to the forward declaration of the incomplete type.
Larisse Voufo
lvoufo at google.com
Wed Jun 26 20:22:00 PDT 2013
Ah. Right. I'll fix that.
On Wed, Jun 26, 2013 at 7:09 PM, Eli Friedman <eli.friedman at gmail.com>wrote:
> On Wed, Jun 26, 2013 at 6:50 PM, Larisse Voufo <lvoufo at google.com> wrote:
>
>> Author: lvoufo
>> Date: Wed Jun 26 20:50:25 2013
>> New Revision: 185056
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=185056&view=rev
>> Log:
>> Fix a conversion to incomplete type bug -- The error message now
>> specifically states that the type is incomplete and points to the forward
>> declaration of the incomplete type.
>>
>> Added:
>> cfe/trunk/test/SemaCXX/conversion-incomplete-type.cpp
>> Modified:
>> cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>> cfe/trunk/lib/Sema/SemaInit.cpp
>> cfe/trunk/lib/Sema/SemaOverload.cpp
>>
>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=185056&r1=185055&r2=185056&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Wed Jun 26
>> 20:50:25 2013
>> @@ -5014,6 +5014,8 @@ def err_typecheck_ambiguous_condition :
>> "conversion %diff{from $ to $|between types}0,1 is ambiguous">;
>> def err_typecheck_nonviable_condition : Error<
>> "no viable conversion%diff{ from $ to $|}0,1">;
>> +def err_typecheck_nonviable_condition_incomplete : Error<
>> + "no viable conversion%diff{ from $ to incomplete type $|}0,1">;
>> def err_typecheck_deleted_function : Error<
>> "conversion function %diff{from $ to $|between types}0,1 "
>> "invokes a deleted function">;
>>
>> Modified: cfe/trunk/lib/Sema/SemaInit.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=185056&r1=185055&r2=185056&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaInit.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaInit.cpp Wed Jun 26 20:50:25 2013
>> @@ -6251,9 +6251,15 @@ bool InitializationSequence::Diagnose(Se
>> break;
>>
>> case OR_No_Viable_Function:
>> - S.Diag(Kind.getLocation(), diag::err_typecheck_nonviable_condition)
>> - << Args[0]->getType() << DestType.getNonReferenceType()
>> - << Args[0]->getSourceRange();
>> + if (!DestType.getNonReferenceType()->isIncompleteType() ||
>> + !S.RequireCompleteType(Kind.getLocation(),
>> + DestType.getNonReferenceType(),
>> +
>> diag::err_typecheck_nonviable_condition_incomplete,
>> + Args[0]->getType(),
>> Args[0]->getSourceRange()))
>> + S.Diag(Kind.getLocation(),
>> diag::err_typecheck_nonviable_condition)
>> + << Args[0]->getType() << Args[0]->getSourceRange()
>> + << DestType.getNonReferenceType();
>>
>> You don't need to call isIncompleteType() before calling
> RequireCompleteType().
>
> -Eli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130626/f2aa2a23/attachment.html>
More information about the cfe-commits
mailing list