On Tue, Aug 21, 2012 at 7:17 PM, Chandler Carruth <[email protected]>wrote:
> On Tue, Aug 21, 2012 at 6:59 PM, Richard Trieu <[email protected]> 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. > > >> 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 >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
