On May 29, 2011, at 1:51 PM, Richard Trieu wrote:

> Made changes to how 'struct'/'class' mismatches are handled.
> - Removed fix-it hints from template instaniations since changes to the
> templates are rarely helpful.
> - Changed the caret in template instaniations from the class/struct name to 
> the
> class/struct keyword, matching the other warnings.
> - Do not offer fix-it hints when multiple declarations disagree.  Warnings are
> still given.
> - Once a definition is found, offer a fix-it hint to all previous declarations
> with wrong tag.
> - Declarations that disagree with a previous definition will get a fix-it hint
> to change the declaration.

I think this is great. I have one question:

+    if (isTemplate) {
+      Diag(NewTagLoc, diag::warn_struct_class_tag_mismatch)
+        << (NewTag == TTK_Class)
+        << isTemplate << &Name
+        << FixItHint::CreateReplacement(SourceRange(NewTagLoc),
+                                        OldTag == TTK_Class ?
+                                        "class" : "struct");
+      Diag(Previous->getLocation(), diag::note_previous_use);
+      return true;
+    }

Why do we bail out early for templates, rather than treating them the same way 
as non-templates?

        - Doug

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to