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

Richard Smith richard at metafoo.co.uk
Tue Aug 21 20:15:47 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.
>

It seems inconsistent that we print:

+// CHECK-ELIDE-TREE:       [const int != int]>>

... for a non-template type but...

+// CHECK-ELIDE-TREE:     [const != (no qualifiers)] vector<

... for a template type. Can we use the latter form (and qualifier
highlighting) in both cases?

Examples:
> vector<const vector<int>> and vector<vector<int>>
> inline: vector<const vector<[...]>> vs. vector<(missing const)
> vector<[...]>
> tree:
> vector<
>   [const != (no qualifiers)] vector<
>     [...]>>
>
> 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/8a780226/attachment.html>


More information about the cfe-commits mailing list