[cfe-commits] [Patch] Handle qualifiers for template types in during template type diffing.
Richard Trieu
rtrieu at google.com
Wed Sep 26 19:02:38 PDT 2012
On Thu, Sep 13, 2012 at 4:44 PM, Richard Trieu <rtrieu at google.com> wrote:
> On Mon, Aug 27, 2012 at 4:29 PM, Richard Trieu <rtrieu at google.com> wrote:
>
>> On Mon, Aug 27, 2012 at 11:04 AM, Chandler Carruth <chandlerc at google.com>wrote:
>>
>>> Cool, a couple of high level comments:
>>>
>>> @@ -778,17 +793,19 @@
>>> if (Context.hasSameType(FromType, ToType)) {
>>> Tree.SetSame(true);
>>> } else {
>>> - const TemplateSpecializationType *FromArgTST =
>>> - GetTemplateSpecializationType(Context, FromType);
>>> - const TemplateSpecializationType *ToArgTST =
>>> - GetTemplateSpecializationType(Context, ToType);
>>> -
>>> - if (FromArgTST && ToArgTST) {
>>> - bool SameTemplate = hasSameTemplate(FromArgTST, ToArgTST);
>>> - if (SameTemplate) {
>>> -
>>> Tree.SetNode(FromArgTST->getTemplateName().getAsTemplateDecl(),
>>> -
>>> ToArgTST->getTemplateName().getAsTemplateDecl());
>>> - DiffTemplate(FromArgTST, ToArgTST);
>>> + Qualifiers FromQual, ToQual;
>>> + bool SameTemplate = hasSameTemplate(Context, FromType,
>>> ToType,
>>> + FromQual, ToQual);
>>> + if (SameTemplate) {
>>> + const TemplateSpecializationType *FromArgTST =
>>> + GetTemplateSpecializationType(Context, FromType);
>>> + const TemplateSpecializationType *ToArgTST =
>>> + GetTemplateSpecializationType(Context, ToType);
>>> + if (FromArgTST && ToArgTST) {
>>> +
>>> Tree.SetNode(FromArgTST->getTemplateName().getAsTemplateDecl(),
>>> +
>>> ToArgTST->getTemplateName().getAsTemplateDecl());
>>> + Tree.SetNode(FromQual, ToQual);
>>> + DiffTemplate(FromArgTST, ToArgTST);
>>> }
>>> }
>>> }
>>>
>>> The indent here is now off... and this is crazily nested.
>>>
>>> Can we factor this function into smaller pieces with less nesting? I
>>> think that would make it much easier to read.
>>>
>>> @@ -824,62 +841,120 @@
>>> }
>>> }
>>>
>>> + static void RemoveQualifiers(Qualifiers &Qual, Qualifiers RemoveQual)
>>> {
>>>
>>> I feel like this should be a method on Qualifiers?
>>>
>>> + // Removes any common qualifiers from ToQual and FromQual and places
>>> them
>>> + // in CommonQual.
>>> + void DiffQualifiers(Qualifiers &FromQual, Qualifiers &ToQual,
>>>
>>> I feel like this should also be provided by Qualifiers -- probably as a
>>> static factory function?
>>>
>>
>> Good idea. I'll make a new patch for the Qualifiers stuff.
>>
>
> Qualifiers functions pulled out and committed in a separate patch.
> Updated patch attached.
>
Another patch. Fix some issues with handling of templates in typedefs and
added a test case for them.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120926/0d2331bd/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qualifers-type-diffing4.patch
Type: application/octet-stream
Size: 28212 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120926/0d2331bd/attachment.obj>
More information about the cfe-commits
mailing list