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

Chandler Carruth chandlerc at google.com
Tue Aug 21 19:17:40 PDT 2012


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.


> tree:
> vector<
>   [const != (no qualifiers)] vector<
>

But I like this to show no qualifiers in the != display of the tree.


>     [...]>>
>
> vector<const vector<int>> and vector<volatile vector<int>>
> inline: vector<const (missing volatile) vector<[...]>> vs vector<volatile
> (missing const) vector<[...]>>
> tree:
> vector<
>   [const != volatile] vector<
>     [...]>>
>
> Highlighting is also added for the differing qualifiers.
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120821/4f5bc42b/attachment.html>


More information about the cfe-commits mailing list