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

Richard Trieu rtrieu at google.com
Tue Aug 21 18:59:04 PDT 2012


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.

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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120821/6eabe468/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qualifers-type-diffing.patch
Type: application/octet-stream
Size: 27434 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120821/6eabe468/attachment.obj>


More information about the cfe-commits mailing list