[cfe-commits] r62971 - in /cfe/trunk: include/clang/Basic/DiagnosticKinds.def lib/Sema/Sema.h lib/Sema/SemaExprCXX.cpp lib/Sema/SemaOverload.cpp lib/Sema/SemaType.cpp test/SemaCXX/member-pointer.cpp test/SemaCXX/qualification-conversion.cpp

Douglas Gregor dgregor at apple.com
Mon Jan 26 12:54:33 PST 2009


On Jan 26, 2009, at 11:31 AM, Sebastian Redl wrote:

> Douglas Gregor wrote:
>>
>> On Jan 25, 2009, at 11:43 AM, Sebastian Redl wrote:
>>
>>> Author: cornedbee
>>> Date: Sun Jan 25 13:43:20 2009
>>> New Revision: 62971
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=62971&view=rev
>>> Log:
>>> Implement implicit conversions for pointers-to-member.
>>
>> Great!
>>
>>> +/// CheckMemberPointerConversion - Check the member pointer
>>> conversion from the
>>> +/// expression From to the type ToType. This routine checks for
>>> ambiguous or
>>> +/// virtual (FIXME: or inaccessible) base-to-derived member pointer
>>> conversions
>>> +/// for which IsMemberPointerConversion has already returned true.
>>> It returns
>>> +/// true and produces a diagnostic if there was an error, or  
>>> returns
>>> false
>>> +/// otherwise.
>>> +bool Sema::CheckMemberPointerConversion(Expr *From, QualType  
>>> ToType) {
>>> +  QualType FromType = From->getType();
>>> +
>>> +  if (const MemberPointerType *FromPtrType =
>>> +        FromType->getAsMemberPointerType()) {
>>> +    if (const MemberPointerType *ToPtrType =
>>> +          ToType->getAsMemberPointerType()) {
>>
>> Why not just assert(FromType->isMemberPointerType() &&
>> ToType->isMemberPointerType())? We shouldn't be in here if we don't
>> already know that this is a pointer-to-member conversion.
> 1) Because you don't in CheckPointerConversion.
> 2) Actually From may be a null pointer constant.

Argh! Good point.

   - Doug




More information about the cfe-commits mailing list