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:38:13 PDT 2013


Fixed. cf. r185058.

Thanks,
-- Larisse.


On Wed, Jun 26, 2013 at 8:22 PM, Larisse Voufo <lvoufo at google.com> wrote:

> 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/c3883d51/attachment.html>


More information about the cfe-commits mailing list