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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits