<br><br><div class="gmail_quote">On Tue, Aug 21, 2012 at 8:15 PM, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div class="im">On Tue, Aug 21, 2012 at 6:59 PM, Richard Trieu <span dir="ltr"><<a href="mailto:rtrieu@google.com" target="_blank">rtrieu@google.com</a>></span> wrote:<br></div><div class="im">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Currently, template diffing does not handle cases where the templates have qualifiers.  This can lead to warnings such as:<div><br></div><div>... 'vector<vector<[...]>>' cannot convert to 'vector<vector<[...]>>' ...</div>



<div><br></div><div>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.</div>

</blockquote><div><br></div></div><div>It seems inconsistent that we print:</div><div><br></div><div>+// CHECK-ELIDE-TREE:       [const int != int]>></div><div><br></div><div>... for a non-template type but...</div>
<div><br>
</div><div>+// CHECK-ELIDE-TREE:     [const != (no qualifiers)] vector<</div><div><br></div><div>... for a template type. Can we use the latter form (and qualifier highlighting) in both cases?</div></div></blockquote>
<div><br></div><div>Yes, it should be possible to print qualifiers on all types. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<div>Examples:</div><div>vector<const vector<int>> and vector<vector<int>></div><div>inline: vector<const vector<[...]>> vs. vector<(missing const) vector<[...]></div>

<div>tree:</div><div>vector<</div><div>  [const != (no qualifiers)] vector<</div><div>    [...]>></div><div><br></div><div>vector<const vector<int>> and vector<volatile vector<int>></div>



<div>inline: vector<const (missing volatile) vector<[...]>> vs vector<volatile (missing const) vector<[...]>></div><div>tree:</div><div>vector<</div><div>  [const != volatile] vector<</div><div>



    [...]>></div><div><br></div><div>Highlighting is also added for the differing qualifiers.</div>
<br></div><div class="im">_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></div></blockquote></div><br>
</blockquote></div><br>