[cfe-commits] [Patch] Handle qualifiers for template types in during template type diffing.

Chandler Carruth chandlerc at google.com
Wed Aug 22 12:59:58 PDT 2012


On Wed, Aug 22, 2012 at 11:25 AM, Richard Trieu <rtrieu at google.com> wrote:

> On Tue, Aug 21, 2012 at 7:17 PM, Chandler Carruth <chandlerc at google.com>wrote:
>
>> On Tue, Aug 21, 2012 at 6:59 PM, Richard Trieu <rtrieu at google.com> wrote:
>>
>>> Currently, template diffing does not handle cases where the templates
>>> have qualifiers.  This can lead to warnings such as:
>>>
>>> ... 'vector<vector<[...]>>' cannot convert to 'vector<vector<[...]>>' ...
>>>
>>> when the message means, can't convert from vector<const vector<int>> to
>>> vector<vector<int>>.  This patch allows the internal diff tree to store the
>>> qualifiers for template types and adds new methods for finding the
>>> difference between sets of qualifiers and to print out the qualifiers.
>>>  This does not affect non-template types as they already print qualifiers.
>>>
>>
>> Very cool!
>>
>>
>>> Examples:
>>> vector<const vector<int>> and vector<vector<int>>
>>> inline: vector<const vector<[...]>> vs. vector<(missing const)
>>> vector<[...]>
>>>
>>
>> I think I would prefer: vector<const vector<[...]>> vs.
>> vector<vector<[...]>>
>>
>
>> We can use the cyan highlighting to further emphasize the qualifiers on
>> both sides (if any) when the qualifiers are different. This would make the
>> const bright here, and in the example further down, the const bright on one
>> side and the volatile on the other.
>>
>> One reason why I prefer this format is brevity. The other is that the
>> error might be the *presence* of const just as easily as the absence.
>>
>
> The motivation behind the (missing ...) was that there's no guarantee that
> the types printed would be close to each other.  There may be cases of :
> vector<const vector<[...]>> ... long message ... vector<vector<[...]>>.
>  Going by your suggestion, the second type would be completely
> unhighlighted.
>

Seems fine to me? As long as the const is highlighted in the first type, I
think it's likely to draw the attention to the correct place.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120822/02089d13/attachment.html>


More information about the cfe-commits mailing list