erichkeane added inline comments.

================
Comment at: include/clang/Sema/ParsedAttr.h:956
+
+inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
+                                           const ParsedAttr *At) {
----------------
Note that the pointer-overload is required since a couple of templates are used 
that switch between an Attr and a ParsedAttr, so we need to have the same form 
as the Attr.

Also note that we cannot do what Attr does (which is store an Attr Pointer in 
the diagnostic) without making Basic dependent on Sema, which seemed worse than 
the allocation in diagnostic situations.


================
Comment at: lib/Sema/SemaDeclAttr.cpp:3941
 
-CommonAttr *Sema::mergeCommonAttr(Decl *D, SourceRange Range,
-                                  IdentifierInfo *Ident,
-                                  unsigned AttrSpellingListIndex) {
-  if (checkAttrMutualExclusion<InternalLinkageAttr>(*this, D, Range, Ident))
+CommonAttr *Sema::mergeCommonAttr(Decl *D, const ParsedAttr &AL) {
+  if (checkAttrMutualExclusion<InternalLinkageAttr>(*this, D, AL))
----------------
It was tempting to template-these, but that would require moving them (or 
forcing instantiation) in the header file.  Additionally, since there is a 
difference between the spelling of how to get a location between the two types, 
this would become awkward.


https://reviews.llvm.org/D50390



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to