erik.pilkington added a comment.

> We explicitly allow to add an annotation after
>  the definition of the class to allow adding annotations
>  to external source from by the user, e.g.
> 
>   #include <vector>
>   
>   namespace std {
>   template<typename T, typename Alloc>
>   class [[gsl::Owner(T)]] vector;
>   }

Wait, does that even work? What if the vector was declared in an inline 
namespace in the header? Seems like a strange recommendation for users. Is 
there some reason you can't just add these annotations to standard libraries? I 
doubt libcxx would have a problem with getting better warnings on their types.



================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4560-4561
+  if(AL.getKind() ==  ParsedAttr::AT_Owner) {
+    if (checkAttrMutualExclusion<PointerAttr>(S, D, AL))
+      return;
+    if (const auto *Attr = D->getAttr<OwnerAttr>()) {
----------------
This is duplicated with the first line in the function.


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4564
+      if (Attr->getDerefType().getTypePtr() != ParmType.getTypePtr()) {
+        S.Diag(AL.getLoc(), diag::err_attributes_are_not_compatible) << AL << 
Attr;
+        S.Diag(Attr->getLocation(), diag::note_conflicting_attribute);
----------------
`diag::warn_duplicate_attr`?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63954/new/

https://reviews.llvm.org/D63954



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

Reply via email to