================ @@ -7,3 +7,106 @@ struct S { }; // CHECK: CXXMethodDecl {{.*}}clang::lifetime_capture_by(a, b, global) + +// **************************************************************************** +// Infer annotation for STL container methods. +// **************************************************************************** +namespace __gnu_cxx { +template <typename T> +struct basic_iterator {}; +} + +namespace std { +template<typename T> class allocator {}; +template <typename T, typename Alloc = allocator<T>> +struct vector { + typedef __gnu_cxx::basic_iterator<T> iterator; + iterator begin(); + + vector(); + + void push_back(const T&); + void push_back(T&&); + + void insert(iterator, T&&); +}; +} // namespace std +struct [[gsl::Pointer()]] View {}; +std::vector<View> views; +// CHECK: ClassTemplateSpecializationDecl {{.*}} struct vector definition implicit_instantiation +// CHECK: TemplateArgument type 'View' +// CHECK-NOT: LifetimeCaptureByAttr ---------------- usx95 wrote:
No. That would add the annotation to all of its specializations which is not something we want. Tested: Added an extra `// CHECK-NOT: LifetimeCaptureByAttr` before the beginning of the tests as well. https://github.com/llvm/llvm-project/pull/117122 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits