On Wed, Aug 22, 2012 at 12:59 PM, Chandler Carruth <[email protected]>wrote:
> On Wed, Aug 22, 2012 at 11:25 AM, Richard Trieu <[email protected]> wrote: > >> 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. >> > > Seems fine to me? As long as the const is highlighted in the first type, I > think it's likely to draw the attention to the correct place. > New patch. This includes the changes Chandler and Richard Smith suggested: when printing types inline, don't print (missing ...) for missing qualifiers; and maintain consistence by performing qualifier highlighting on non-template types used as template arguments.
qualifers-type-diffing2.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
