[cfe-commits] [Patch] Print differences for function pointers.

Matthieu Monrocq matthieu.monrocq at gmail.com
Thu Nov 17 12:45:38 PST 2011


Le 17 novembre 2011 01:14, Richard Trieu <rtrieu at google.com> a écrit :

> On Wed, Nov 16, 2011 at 12:06 PM, Matthieu Monrocq <
> matthieu.monrocq at gmail.com> wrote:
>
>>
>>
>> Le 15 novembre 2011 21:23, Richard Trieu <rtrieu at google.com> a écrit :
>>
>> New feature that will print additional information when non-matching
>>> function pointers are used.  This will help users more easily distinguish
>>> why the function pointers do not match.  The points of difference that will
>>> be noted are:
>>>
>>> Different number of parameters
>>> Different parameter type
>>> Different return type
>>> Different function qualifiers
>>>
>>> For instance, code like this:
>>>
>>> double foo(int x) {return 0;};
>>> double (*bar)(int, int) = &foo;
>>>
>>> Will get this error message:
>>>
>>> function-mismatch.cc:2:10: error: cannot initialize a variable of
>>>       type 'double (*)(int, int)' with an rvalue of type 'double
>>> (*)(int)'
>>>       because of different number of parameters (expected 2 but has 1)
>>> double (*bar)(int, int) = &foo;
>>>          ^                ~~~~
>>>
>>> Patch is attached and also available at
>>> http://codereview.appspot.com/5369119/
>>>
>>>
>>> Nice!
>>
>> Do you plan on adding something for a difference of class (for pointer to
>> member functions) ? Or perhaps that it already exists...
>>
>> -- Matthieu
>>
>> Added a bit to the diagnostic message to say if they are from different
> classes, as well as changes in response to comments Richard Smith made on
> http://codereview.appspot.com/5369119/


Thanks!

-- Matthieu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20111117/c5f7014d/attachment.html>


More information about the cfe-commits mailing list